From 03c65a0d5fdc197254bae50697bd4c6aaf69bb3d Mon Sep 17 00:00:00 2001 From: aimsise Date: Wed, 17 Jun 2026 01:57:14 +0900 Subject: [PATCH 01/15] feat(eval-p0): agnosticism codification + de-contamination + cross-ticket sibling-guard Comprehensive eval-P0-batch increment on impl/eval-p0-batch. Multiple efforts are committed together because the contract-test file (tests/test-skill-contracts.sh) entangles their CTs and partial staging is unavailable in this environment. - Agnosticism (charter P0): bind a "Product/Language/Domain Agnosticism" section in CLAUDE.md (property-not-membership rule + the (A) user-product-substrate=agnostic / (B) harness-own-substrate=fixed line + meet-or-beat + HARD-LINE-vs-JUDGMENT enforcement boundary); de-falsify the detect-tautological-assertions.sh header (it is JS/Jest-Vitest-targeted, not "language/framework-agnostic"; other languages rely on the ac-evaluator semantic pass); demote the verification-depth criticality domain-name list to illustrative and promote the domain-independent property trigger (shared-boundary + correctness-critical) to primary. - De-contamination (CT-DECONTAM-1): product-instance recidivism guard over the 13-file normative set held at 0 hits; independent-oracle-harness uses a neutral worked example while keeping its four-part contract. - Cross-ticket sibling-guard (P-A): the decomposer emits a mandatory-present, unconditional cross-ticket `shared_input_boundary` signal naming the sibling tickets that share one external input class; create-ticket forwards each ticket's membership into BOTH its planner and its ticket-evaluator spawn; a "delegation is NOT an automatic n/a" clause forces each delegating sibling to carry its own hostile / accept-set failure-class row. New RED-first contract test CT-EV-SHARED-INPUT-XTICKET pins the signal + the clause across producer, schema, forwarder, canonical rubric, both ac-evaluator twins, planner, and ticket-evaluator. - eval-P0 batch + strictness-leniency hardening across skills / agents / hooks. Verification: test-skill-contracts 838/838, test-path-consistency 144/144; hook suites all green (pre-bash-safety 200, pre-write-safety 33, pre-edit-safety 35, pre-bash-contract-guard 8, hooks-lib 163, state-parsers 33, autopilot-continue 53); ShellCheck --severity=warning rc=0; ac-evaluator twins byte-identical (CT-EV-MODEL-1); CT-DECONTAM-1 / CT-AR-13 / CT-EV-GATE10-2 green. P-A sibling-artifact omission rationale (CLAUDE.md ## Modifications): the delegation-not-n/a clause is propagated to the canonical rubric + both ac-evaluator twins + planner + ticket-evaluator + the ticket-template R2 row, but intentionally NOT to the other CT-AR-13 sibling-guard carriers (test-authoring-guidance, verification-depth, implementer, test-writer) -- those are downstream authoring / impl guidance, not graders of the cross-ticket signal, which reaches the grading path via the planner self-audit + ticket-evaluator + ac-evaluator without them. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 2 +- ARCHITECTURE.md | 2 +- CLAUDE.md | 58 ++++ CONTRIBUTING.md | 8 +- README.md | 30 +- agents/ac-evaluator-hi.md | 30 +- agents/ac-evaluator.md | 30 +- agents/decomposer.md | 6 +- agents/implementer.md | 4 +- agents/planner.md | 4 +- agents/test-writer.md | 2 +- agents/ticket-evaluator.md | 2 +- hooks/autopilot-continue.sh | 24 +- hooks/lib/audit-coverage.sh | 10 + hooks/lib/parse-state-file.sh | 108 +++++++ hooks/lib/state-authority.sh | 22 +- hooks/post-ship-state-auto-compact.sh | 19 +- hooks/pre-bash-contract-guard.sh | 46 +++ hooks/pre-bash-safety.sh | 31 ++- hooks/pre-edit-safety.sh | 51 +++- hooks/pre-write-safety.sh | 51 +++- skills/autopilot/references/state-file.md | 22 +- skills/brief/SKILL.md | 12 +- skills/create-ticket/SKILL.md | 2 +- .../references/ac-quality-criteria.md | 14 +- .../references/agent-spawn-prompts.md | 4 +- .../references/autopilot-policy-reference.md | 50 ++-- .../references/spec-decomposer-input.md | 2 + .../references/ticket-template.md | 2 +- skills/impl/SKILL.md | 2 +- .../lib/detect-tautological-assertions.sh | 14 +- .../references/ac-evaluator-orchestration.md | 15 +- skills/impl/references/evidence-channels.md | 8 +- .../references/independent-oracle-harness.md | 85 ++++-- .../tautological-assertion-rules.md | 23 +- .../references/test-authoring-guidance.md | 43 +-- skills/impl/references/verification-depth.md | 47 ++-- tests/test-autopilot-continue.sh | 47 ++++ tests/test-hooks-lib.sh | 28 +- tests/test-pre-bash-contract-guard.sh | 65 +++++ tests/test-pre-bash-safety.sh | 49 ++++ tests/test-pre-edit-safety.sh | 101 +++++++ tests/test-pre-write-safety.sh | 60 ++++ tests/test-skill-contracts.sh | 263 ++++++++++++++++++ tests/test-state-parsers.sh | 50 ++++ 45 files changed, 1337 insertions(+), 211 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b00d430..eb4c62d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v5 - name: Run ShellCheck on hooks - run: shellcheck --severity=warning hooks/*.sh + run: shellcheck --severity=warning hooks/*.sh hooks/lib/*.sh - name: Run ShellCheck on tests run: shellcheck --severity=warning tests/*.sh tests/helpers/*.sh diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index d16f563..70924ae 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -15,7 +15,7 @@ Treats the context window as a consumable resource and systematically conserves A **Generator** writes code, independent **Evaluators** verify it, and failures trigger automatic retry with specific feedback — up to 9 rounds by default (configurable per invocation or per ticket via policy). The information firewall is asymmetric: Evaluators never see the Generator's self-assessment and judge solely from `git diff` and test results, while the Generator does receive Evaluator feedback on retry. -Even though both sides run the same model, **weights × context = output** — by excluding the Generator's trial-and-error history from the Evaluator's context, sunk-cost bias is structurally eliminated rather than merely discouraged by prompt. FAIL-CRITICAL violations halt execution immediately, and after ticket completion evaluation logs feed into the Knowledge Base, closing a cross-session feedback loop. +The two sides may run different models by policy — the Generator is always opus, while Evaluators are sonnet by default and escalate to opus for critical or exhaustive work — so independence is enforced by **context separation (the information firewall)**, not by weight uniformity: excluding the Generator's trial-and-error history from the Evaluator's context eliminates sunk-cost bias structurally rather than merely discouraging it by prompt. FAIL-CRITICAL violations halt execution immediately, and after ticket completion evaluation logs feed into the Knowledge Base, closing a cross-session feedback loop. ## Knowledge Base (Cross-Session Learning) diff --git a/CLAUDE.md b/CLAUDE.md index eba5bbe..caca4f3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,6 +33,9 @@ This rule was distilled from a v6.7.0 dogfood incident in which a verify hook ne - `SW_AUTOPILOT_ASK_GUARD` — controls `hooks/pre-askuserquestion-guard.sh`. Values: `on` (default; matrix active), `metric-only` (compute the matrix and log `[ASK-GUARD] metric-only: would deny ...` to stderr without denying), `off` (disable the guard; unknown values collapse here so a typo fails open). The hook implements the 3-tier `risk_tolerance` allow-list documented in `skills/autopilot/SKILL.md ## Non-interactive orchestrator contract (3-tier, risk_tolerance-aware)`; when `autopilot-policy.yaml` is absent or carries an unknown `risk_tolerance:` value, `hooks/lib/parse-state-file.sh::get_risk_tolerance` returns `conservative` (deliberate fail-open so the six known gate-id headers remain answerable). - `SW_AUTOPILOT_DONE_GATE_TTL_SEC` — default `86400` (24 hours). TTL window for `hooks/scout-checkpoint-guard.sh` Step 2a (the autopilot-completion gate added in v8.0.1). The gate silent-exits the hook when (1) no `autopilot-state.yaml` exists under `briefs/active/` or `product_backlog/` (no active autopilot), (2) `briefs/done//autopilot-state.yaml` exists with mtime within this TTL, AND (3) every `tickets[].status` equals `completed`. Required because the existing Step 3 phase-state.yaml lookup uses `find_phase_state_file` which scans `active/` only — after `/ship` moves the brief to `briefs/done/`, the moved `phase-state.yaml` becomes invisible and the 3-AND (a)(b)(c) would otherwise false-block on stale transcript artifacts. Set `0` to disable the TTL bound (the gate fires on any all-completed `briefs/done/` state regardless of age — useful for replay scenarios where a session is resumed long after autopilot finished). Shorten (e.g. `600`) during dogfood / regression debugging when you want stale done state to fall through immediately. Non-numeric values fall back to `86400` with a one-line `[SCOUT-AUTOPILOT-DONE-GATE]` stderr warning. Honoured only when `SW_SCOUT_CHECKPOINT_MODE` is not `off` — the kill switch in Step 2 short-circuits the entire hook including Step 2a. - `SW_AUTOPILOT_POLICY_STOP_HONOR` — default `on`. Controls whether the three autopilot Stop hooks (`hooks/autopilot-continue.sh`, `hooks/impl-checkpoint-guard.sh`, `hooks/scout-checkpoint-guard.sh`) HONOUR a model-declared hard-stop instead of forcing the loop to continue. When the orchestrator legitimately hard-stops it emits `[AUTOPILOT-POLICY] gate= action=stop reason=<...>` in its last assistant turn (mandated by `skills/autopilot/SKILL.md`); the shared detector `hooks/lib/detect-policy-gate-stop.sh::last_turn_declares_policy_gate_stop` scans only that LAST assistant turn's `text` content blocks for the marker. Values: `on` (default — honour: `autopilot-continue.sh` allows `end_turn` and appends a `boundary: session_end` / `stop_reason: policy_gate_stop` `runtime_metrics` entry, the two checkpoint guards stand down without blocking and clear their own counter, none of the three re-injects "Do NOT stop"), `metric-only` (detect and log a `[POLICY-GATE-STOP]`-prefixed stderr line stating it WOULD honour, but still emit `decision: block` — forensic mode), `off` (ignore the declaration entirely; block exactly as before). Unknown values fail **closed** to `off` semantics so a typo never silently widens the honour behaviour. This knob is purely additive: with it `off` OR no marker present, the existing loop guards (autopilot-continue's `FILE_COUNT>=5 && NOTOOL_COUNT>=5`; the checkpoint guards' 3× counters) remain the sole backstop and every hook behaves exactly as before. Detection is independent of `AUTOPILOT_LEGACY_LOOPGUARD`. Fixes a dogfood thrash where a hard-stop was re-injected 11× because the hooks ignored the model's declared `policy_gate_stop`. +- `SW_SAFETY_JQ_MISSING_MODE` — default `metric-only`. Controls the jq-missing preflight at the top of the three safety hooks (`hooks/pre-bash-safety.sh`, `hooks/pre-write-safety.sh`, `hooks/pre-edit-safety.sh`). `jq` is a documented hard dependency; when it is absent these guards cannot parse the tool payload and previously died with a silent `exit 127` (which Claude Code treats as a non-blocking error — a fail-OPEN). Values: `on` (fail **closed** — `exit 2` with an explicit `[SAFETY-JQ-MISSING] : jq not found …` message, blocking the tool call), `metric-only` (default — log `[SAFETY-JQ-MISSING] metric-only: … would fail closed …` to stderr and ALLOW the call with `exit 0`, so the shipped fail-open behaviour is unchanged but now observable), `off` (silently allow, `exit 0`, no message). Unknown values collapse to `metric-only` (the observe-only default — a typo never silently flips the guard to fail-closed). **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips on a jq-present host, set `=on` to enforce fail-closed. The `[SAFETY-JQ-MISSING]` exit-2 path is verified under a PATH-restricted (no-jq) test in `tests/test-pre-bash-safety.sh` / `tests/test-pre-write-safety.sh` / `tests/test-pre-edit-safety.sh` with the knob set to `on`. +- `SW_BASH_STATE_GUARD_MODE` — default `metric-only`. Controls detection 3 of `hooks/pre-bash-contract-guard.sh` (the autopilot-context PreToolUse:Bash guard): a Bash-mediated state-file status mutation — `yq -i` / `sed -i` / shell-redirect on `autopilot-state.yaml` / `phase-state.yaml` that drives a `status:` (or `steps.`) to `skipped` / `completed` / `failed` / `in_progress`. The Write/Edit skip-transition guard (`hooks/pre-state-transition.sh`) is wired only to Write/Edit, so this closes the Bash bypass (ST-04). Values: `on` (emit `decision:block` with `unauthorized_state_mutate_bash` — deny the call), `metric-only` (default — log `[PRE-BASH-CONTRACT-GUARD] metric-only: would deny ...` to stderr and ALLOW), `off` (skip detection 3 entirely). Unknown values collapse to `metric-only`. Detections 1 (forbidden manual_bash_fallbacks rationale) and 2 (direct `git commit`) are NOT gated by this knob — the hook's existing NAC posture is preserved. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Read-only commands (`grep`/`cat`/`yq` without `-i`) and `runtime_metrics` appends (no status transition) are not matched. +- `SW_STATE_FIELD_GUARD_MODE` — default `metric-only`. Gates the **HOOK_OWNED_FIELDS enforcement** in `hooks/pre-write-safety.sh` / `hooks/pre-edit-safety.sh`. The registry now ships with `.runtime_metrics` (an append-only telemetry list written exclusively by the six runtime-metrics writer hooks — Foundation 3 / ST-03), so a model Write/Edit that would clobber hook-appended `runtime_metrics` entries (a lost-update) is detectable. Values: `on` (emit `decision:block` whose reason NAMES the violated field — e.g. `.runtime_metrics` — and references `docs/state-schema.md`), `metric-only` (default — log `[STATE-FIELD-GUARD] metric-only: would block ...` to stderr and ALLOW, so populating the registry does NOT change the shipped allow-by-default behaviour), `off` (allow silently). Unknown values collapse to `metric-only`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Detection covers the inline `runtime_metrics: []` → `[…]` (and blank-out) form; a multi-line list mutation expressed without an inline value change is not detected (acceptable under the metric-only default). ## Language @@ -40,6 +43,59 @@ This rule was distilled from a v6.7.0 dogfood incident in which a verify hook ne Non-English content is allowed only in gitignored paths: `.simple-workflow/`, `.docs/`, `CLAUDE.local.md`, `.claude/settings.local.json`, `.claude/worktrees/`, `.env*`. +## Product/Language/Domain Agnosticism + +**IMPORTANT**: the plugin's normative content — everything under `skills/`, +`agents/`, and `hooks/` that instructs the model how to build, verify, or ship — +MUST serve every user's needs without baking in dependence on a specific +product, programming language, or problem domain. Triggers, rubrics, gates, and +examples MUST key off **properties** (a computed numeric/algorithmic value; a +shared input/validation boundary; an irreversible side-effect; a behaviour the +spec advertises as strict / canonical / lossless / or bounded by a limit), never +off membership in a named-product / named-language / named-domain list. + +### The (A) / (B) substrate line + +Two substrates, two different rules: + +- **(A) The user-product substrate** — the source, tests, and artifacts a user + builds *with* the plugin. This MUST be treated agnostically. The harness may + not assume the user's language, framework, test runner, or domain. A named + language / framework / domain may appear ONLY as clearly-labelled, + non-exhaustive **illustration** ("e.g. …", "illustrative only") — never as the + operative trigger, an exhaustive checklist, or a recognition cue the mechanism + depends on. +- **(B) The harness-own substrate** — the plugin's *own* operating dependencies: + `git`, `gh`, `jq`, `yq`, the Claude Code runtime (hooks, skills, agents, the + `Agent` / `Workflow` tools, the state-file machinery), and the PR / release + delivery path. These are legitimately FIXED and are NOT subject to the (A) + rule. Depending on `git` for repo inspection or `gh` for PR creation is + harness plumbing, not a domain dependency. + +### Agnosticism must never lower product quality + +Agnosticism constrains *how* the harness is written; it is not a licence to +verify less. The harness (subagents / skills / hooks) MUST **meet or beat** its +prior defect catch-rate. Where an agnostic formulation cannot guarantee the same +quality a product/domain-specific one did, the answer is NOT to retreat to the +specific cue: thoroughly explore and **generate** an innovative agnostic +mechanism, **verify** it catches the baseline defect classes by construction, +gain confidence, and only THEN implement and update the plan. A property- / +grammar- / oracle-driven mechanism that catches a defect class for ALL inputs is +strictly stronger than a keyword cue that catches it only when a known token is +recalled. + +### Enforcement boundary (HARD-LINE vs JUDGMENT) + +Normative-prose agnosticism is primarily a **review standard**, not a fully +grep-enforced invariant. Only specific, stable **product-instance token** +denylists are mechanised as contract tests (e.g. `CT-DECONTAM-1`, whose +denylist is product instances ONLY — abstract failure-class names and bare +domain vocabulary are deliberately excluded). Judgment criteria ("is this +example illustrative or load-bearing?") MUST NOT be faked as contract tests. +When in doubt, prefer a property-based formulation and leave the final +agnosticism call to review. + ## Releases - SemVer with the `v` prefix (`v6.0.0`, never `6.0.0`). @@ -108,3 +164,5 @@ For any intentional omission, record a one-line rationale in the commit message - Triple-backtick fenced code blocks are exempt from the absolute-home-path scan, so verbatim CI logs (e.g. `/Users/runner/work/...`) may be quoted inside fenced blocks. Do not abuse this exemption for project-authored paths. - The `.gitignore` file is allowlisted because it legitimately stores absolute paths. - The detection regex is case-sensitive and POSIX-only: lowercase `/users/` and Windows-style `C:\Users\...` paths are out of scope. +- **Known limitation — unclosed fences**: the scan toggles fence state on each fence line (a line beginning with three backticks), so an **unclosed** (odd-count) fence extends to end-of-file per CommonMark and exempts every following line from the absolute-home-path scan. An accidental unbalanced fence in generated Markdown can therefore let a home path slip past the guard, which does not validate fence pairing — keep fences balanced. +- **Known limitation — Bash write sinks**: the PII / sensitive-file guards run only on the `Write` and `Edit` tools. The same content written through `Bash` (`echo > file`, `tee`, `python3 -c`, a heredoc) is **not** inspected — `pre-bash-safety.sh` checks `git add` staging plus the destructive / network / identity / privilege denylist, not write sinks. A PII string or sensitive filename created via a shell redirect bypasses these guards by design (best-effort defense-in-depth); prefer `Write` / `Edit` for files that may carry PII. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b5a3623..ccdd8d0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -65,6 +65,8 @@ simple-workflow/ 3. Register it in `hooks/hooks.json` 4. Add tests in `tests/test-your-hook.sh` +Shared logic that several hooks source belongs in `hooks/lib/.sh` instead. Library helpers are *sourced*, so they do **not** carry `set -euo pipefail` (that would leak into the calling hook's shell); they are standalone files that export functions only, with no top-level side effects. See **Code Style** below. + ### Measuring SKILL.md Size For compression work, measure token count with `tests/helpers/count-tokens.sh` rather than bytes: @@ -91,14 +93,14 @@ Tests follow the pattern in `tests/test-helper.sh`, using `assert_allowed`, `ass ## Code Style -- Shell scripts must pass [ShellCheck](https://www.shellcheck.net/) (`--severity=warning`) -- Use `set -euo pipefail` at the top of all shell scripts +- All shell scripts must pass [ShellCheck](https://www.shellcheck.net/) at `--severity=warning`. CI lints `hooks/*.sh`, `hooks/lib/*.sh`, `tests/*.sh`, and `tests/helpers/*.sh`; run the same scope locally before opening a PR (see Pull Request Process below). Silence an intentional warning with a targeted `# shellcheck disable=SCxxxx` directive placed in front of the affected command — for a `case` arm the directive goes in front of the whole `case` statement, not the individual branch — never by loosening the severity. +- **Hook entry scripts** (`hooks/*.sh`) start with `#!/usr/bin/env bash` and `set -euo pipefail`. **Library helpers** (`hooks/lib/*.sh`) are *sourced* by those entry scripts and intentionally do **not** set shell options at the top: a `set -euo pipefail` in a sourced file is a top-level side effect that would mutate the caller's shell. Library helpers are standalone files that export functions only, with no top-level side effects (each helper that manipulates YAML applies a `yq` → `python3 + PyYAML` → pure-shell fallback); the calling hook owns the shell flags. - Use conventional commit prefixes: `feat:`, `fix:`, `docs:`, `test:`, `chore:` ## Pull Request Process 1. Ensure all tests pass: `bash tests/run-all.sh` -2. Ensure ShellCheck passes: `shellcheck --severity=warning hooks/*.sh tests/*.sh` +2. Ensure ShellCheck passes: `shellcheck --severity=warning hooks/*.sh hooks/lib/*.sh tests/*.sh tests/helpers/*.sh` (the same scope CI lints) 3. Create a PR to `main` with a clear description 4. Fill out the PR template diff --git a/README.md b/README.md index 81f634e..91a15b8 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,12 @@ claude plugin install simple-workflow@aimsise-simple-workflow --scope project Inside an active Claude Code session, type `/brief ` and the plugin handles the rest end-to-end: codebase investigation, requirements interview, ticket creation, implementation, multi-agent review, and pull request. -Full argument signature: `/brief [mode=auto|manual]` (default `mode=auto`). +Full argument signature: `/brief [chain=on|off]` (default `chain=on`). The `chain=on|off` form is canonical; `mode=auto|manual` is a deprecated legacy alias (`chain=on` ≡ `mode=auto`, `chain=off` ≡ `mode=manual`). | Mode | Command | Result | |------|---------|--------| -| Full automation (default) | `/brief ` | Idea → PR with zero intervention; large scopes are auto-split into multiple tickets and executed in dependency order | -| Brief-assisted manual | `/brief mode=manual` | Structured brief and decision policy are produced; you drive each subsequent step | +| Full automation (default, `chain=on`) | `/brief ` | Idea → PR with zero intervention; large scopes are auto-split into multiple tickets and executed in dependency order | +| Brief-assisted manual (`chain=off`) | `/brief chain=off` | Structured brief and decision policy are produced; you drive each subsequent step (legacy alias: `mode=manual`) | | Resume an interrupted run | `/autopilot ` | Pick up where a previous automated run left off using state files under `.simple-workflow/backlog/` | ### Execution chains @@ -65,24 +65,27 @@ Three typical execution patterns: ```text # 1. Brief-assisted manual (type each command; repeat scout→impl→ship per ticket): -/brief mode=manual +/brief chain=off /create-ticket /scout /impl /ship # → PR -# 2. Brief manually, then hand off to autopilot for the per-ticket loop: -/brief mode=manual -/create-ticket +# 2. Brief manually, then switch to autopilot for the per-ticket loop: +/brief chain=off +# ...inspect the brief, then opt into autopilot: set `chain: on` in the brief file and +# re-run /create-ticket so each ticket dir receives autopilot-policy.yaml (re-propagation): +/create-ticket brief=.simple-workflow/backlog/briefs/active//brief.md /autopilot # autopilot then loops: /scout → /impl → /ship per ticket → PR +# (running /autopilot directly on a chain=off brief stops with a re-propagation directive) # 3. Full automation (one command): -/brief mode=auto +/brief # brief chains: /create-ticket → /autopilot → (per ticket: /scout → /impl → /ship) → PR ``` -> **Caveat — full automation works best on focused, well-scoped ideas.** On overly broad or ambiguous input, the model can break output contracts, fabricate intermediate state, and continue past failures without surfacing them. Full automation has fewer human-in-the-loop checkpoints than the brief-assisted manual flow, so this kind of misbehaviour is easier to miss. For large or exploratory work, prefer `mode=manual` (you inspect artifacts at each step) or split the work into smaller, focused briefs. +> **Caveat — full automation works best on focused, well-scoped ideas.** On overly broad or ambiguous input, the model can break output contracts, fabricate intermediate state, and continue past failures without surfacing them. Full automation has fewer human-in-the-loop checkpoints than the brief-assisted manual flow, so this kind of misbehaviour is easier to miss. For large or exploratory work, prefer `chain=off` (you inspect artifacts at each step) or split the work into smaller, focused briefs. For phase-by-phase workflows on an existing backlog (skipping the brief), run `/help` inside Claude Code to discover the individual slash commands, or browse `skills/` in this repository. @@ -92,7 +95,7 @@ Tickets carry a `### Capabilities` section that records which user Skills and MC simple-workflow stands on three pillars: -- **Harness Engineering**: structural constraints — an asymmetric information firewall between code authors and code judges (the Generator-Evaluator pattern), bounded sub-agent returns, ticket-confined artifacts, and safe-clear `[SW-CHECKPOINT]` markers — enforce quality by architecture rather than by prompt instructions +- **Harness Engineering**: an asymmetric information firewall between code authors and code judges (the Generator-Evaluator pattern), ticket-confined artifacts, and safe-clear `[SW-CHECKPOINT]` markers are enforced *structurally* — by lifecycle hooks, fresh sub-agent contexts, and on-disk artifacts that hold regardless of model behavior. The bounded sub-agent return budget (< 500 tokens) is a *prompt-level contract* pinned by contract tests, not a runtime-truncation guarantee - **Context Conservation**: the context window is treated as a consumable resource — sub-agents return < 500-token summaries, artifacts live on disk, and state survives compaction - **Cross-session learning**: evaluation logs are distilled into reusable patterns that future implementations inject into their prompts, so the system gets better at your project the more tickets it completes @@ -105,7 +108,7 @@ These pillars exist because Claude Code is powerful, but its context window is f | **Contamination** | Biasing information leaks into contexts where it distorts judgment | Information firewall + ticket directory confinement (see [Harness Engineering](ARCHITECTURE.md#harness-engineering)) | | **Bloat** | Unbounded intermediate output crowds out critical instructions | Artifacts written to files, structured summaries returned to orchestrator | -simple-workflow addresses each threat with architectural constraints that hold regardless of model behavior — not prompt-level instructions that the model might rationalize away. For a deeper walkthrough of each pillar — Context Conservation Protocol, Harness Engineering, Knowledge Base, and Ticket Management state machine — see [ARCHITECTURE.md](ARCHITECTURE.md). +simple-workflow addresses the **structural** threats — Loss, Contamination, Bloat — with architectural constraints that hold regardless of model behavior: automatic snapshots, the information firewall + ticket confinement, and artifacts-to-disk. **Exhaustion** is mitigated by a mix of structural measures (fresh sub-agent contexts, phase-aware context release) and a prompt-level return-size contract (< 500 tokens) pinned by contract tests rather than enforced by runtime truncation. For a deeper walkthrough of each pillar — Context Conservation Protocol, Harness Engineering, Knowledge Base, and Ticket Management state machine — see [ARCHITECTURE.md](ARCHITECTURE.md). ## Setup & Configuration @@ -166,9 +169,12 @@ When injection cannot fire, the hook surfaces a one-line diagnostic via `inject_ - Designed for use with Claude Code CLI. IDE extensions (VS Code, JetBrains) may have limited support for hooks and plugin features. - Pull-request creation requires GitHub CLI (`gh`) with authentication. Other Git hosting services are not supported. - Ticket management uses the local filesystem (`.simple-workflow/backlog/`). There is no sync with external issue trackers (Jira, Linear, etc.). -- Sub-agents consume API tokens independently. Large tickets (L/XL) using Opus may result in higher API costs. +- Sub-agents consume API tokens independently. The Generator (implementer) always runs on Opus, and the evaluator escalates to Opus for critical/exhaustive work, so larger or higher-risk tickets may incur higher API costs. - Built-in test/lint detection covers JS, Python, Rust, Go, JVM (Gradle/Maven/sbt), .NET, Ruby, Elixir, Swift, Flutter/Dart, PHP, and Make. For other ecosystems, wrap your test/lint commands in a Makefile (`make test` / `make lint`) or the evaluator falls back to static code analysis only. - Some recovery paths require interactive mode; running in `claude -p` or CI may stop with an explanatory message rather than complete the recovery. +- **Operating system support**: macOS and Linux are verified (the hook layer is `bash` + `jq`, with optional `yq` / `python3`). Windows is **not** verified — the `bash`+`jq` hook layer requires a POSIX environment (Git Bash, WSL, or Cygwin); native Windows is unsupported. +- **Global command blocks (installation footprint)**: a `v8.0.0` defense-in-depth `Bash` pre-hook unconditionally blocks four command classes in **every** project and session where the plugin is active — network egress (`curl`, `wget`, `scp`, `rsync … ssh`), identity spoofing (`git config user.email|user.name|core.hooksPath`), privilege escalation (`sudo`, `chmod 777`, `chown root`), and commit subversion (`git commit --amend`, `git stash drop`, `git reflog expire`, `git push … --no-verify`). A blocked command exits 2 with a `Blocked: … (v8.0.0 defense-in-depth)` message; there is currently no per-project opt-out knob. Installing the plugin at **project scope** rather than user scope confines these hooks (and all others) to a single repository. +- **Automatic git setup at session start**: under a user-scope install the `SessionStart` setup (see [Setup & Configuration](#setup--configuration)) runs in **any** working directory the session opens — so opening a non-project directory (e.g. `$HOME`) once will `git init` it and add an initial commit. Install at project scope to confine setup to one repository. ## Contributing diff --git a/agents/ac-evaluator-hi.md b/agents/ac-evaluator-hi.md index 65b724d..c138d65 100644 --- a/agents/ac-evaluator-hi.md +++ b/agents/ac-evaluator-hi.md @@ -206,11 +206,11 @@ A **computational AC** is one whose PASS/FAIL hinges on a COMPUTED numeric or al For every computational AC in scope, a green project test suite is **necessary but NOT sufficient**. You MUST independently establish the expected value and compare it against the implementation's RAW output: -1. **Independent oracle**: compute at least one expected value from an oracle that does NOT share the implementation's core — a third-party reference library (e.g. `colorjs.io` cross-checking a culori-based engine), a published formula / standard you apply from first principles, or a hand-computed truth table with a cited source. The AC body or its Implementation Notes (per Gate 7) names the oracle; use it (a runtime oracle Skill, if one was bound, would also appear in `## Bound capabilities (per AC)`). NEVER take the implementation's own output (directly, via an alias, or by re-reading a field the code already rounded) as the expected value — that is the oracle-circularity defect this gate exists to catch. When your spawn prompt's `Evidence floor:` is `+1-independent` or `>=2-independent` (the `thorough` / `exhaustive` tiers) AND the AC is a standard-backed computational AC, require **two or more mutually-validated oracles** with **at least one derived from first principles** (the spec formula, hand-implemented, no library) and confirm they agree within an explicit tolerance before trusting either; FAIL a `thorough` / `exhaustive` standard-backed computational AC whose only independent evidence is a single library oracle. Build the second / first-principles oracle yourself under `.simple-workflow/scratch/` per the carve-out (shape: `skills/impl/references/independent-oracle-harness.md`). Where the domain has no published spec or no second independent oracle, the single-oracle path stands — record a Caveat (PASS-WITH-CAVEATS), never FAIL for an oracle that does not exist. **Strongest-derivation preference (all tiers, M3)**: when the AC's contract is derivable from a published spec / formula, PREFER a first-principles oracle (the spec formula, hand-implemented, no library) over a sibling reference library even at the `standard` floor where a single oracle suffices — a library oracle silently inherits that library's conventions. Record the **oracle-kind** you actually used — `first-principles | sibling | hand | none` (`none` = no independent oracle exists for this domain, the degradation path) — and surface it in the per-AC `[ORACLE-AUDIT]` line (below). +1. **Independent oracle**: compute at least one expected value from an oracle that does NOT share the implementation's core — a third-party reference library, a published formula / standard you apply from first principles, or a hand-computed truth table with a cited source. The AC body or its Implementation Notes (per Gate 7) names the oracle; use it (a runtime oracle Skill, if one was bound, would also appear in `## Bound capabilities (per AC)`). NEVER take the implementation's own output (directly, via an alias, or by re-reading a field the code already rounded) as the expected value — that is the oracle-circularity defect this gate exists to catch. When your spawn prompt's `Evidence floor:` is `+1-independent` or `>=2-independent` (the `thorough` / `exhaustive` tiers) AND the AC is a standard-backed computational AC, require **two or more mutually-validated oracles** with **at least one derived from first principles** (the spec formula, hand-implemented, no library) and confirm they agree within an explicit tolerance before trusting either; FAIL a `thorough` / `exhaustive` standard-backed computational AC whose only independent evidence is a single library oracle. Build the second / first-principles oracle yourself under `.simple-workflow/scratch/` per the carve-out (shape: `skills/impl/references/independent-oracle-harness.md`). Where the domain has no published spec or no second independent oracle, the single-oracle path stands — record a Caveat (PASS-WITH-CAVEATS), never FAIL for an oracle that does not exist. **Strongest-derivation preference (all tiers, M3)**: when the AC's contract is derivable from a published spec / formula, PREFER a first-principles oracle (the spec formula, hand-implemented, no library) over a sibling reference library even at the `standard` floor where a single oracle suffices — a library oracle silently inherits that library's conventions. Record the **oracle-kind** you actually used — `first-principles | sibling | hand | none` (`none` = no independent oracle exists for this domain, the degradation path) — and surface it in the per-AC `[ORACLE-AUDIT]` line (below). 2. **Raw, pre-rounding comparison**: compare the implementation's raw output (before display rounding / formatting) against the oracle value with an explicit tolerance (e.g. `|raw − oracle| ≤ 1e-6`). If the project's tests assert only on a display-rounded value, or re-threshold a field the code itself rounds (e.g. asserting `result.ratio >= target` on the code's 2-decimal `ratio`), treat the AC as NOT verified by those tests and FAIL it with feedback to compare the raw value against an independent oracle. 3. **Probe permitted**: write a throwaway oracle probe under the gitignored `.simple-workflow/scratch/` directory (per the oracle-probe carve-out above) when a one-off computation is the fastest way to derive the expected value. Discard it after the round; never import-and-rubber-stamp the implementation. Invoke a JS/TS probe via `node .simple-workflow/scratch/probe.mjs` or `npx -y tsx .simple-workflow/scratch/probe.ts`, and a Python probe via `python3 .simple-workflow/scratch/probe.py` (these runtimes are granted in this agent's `tools:` allowlist for scratch probes only). A published-formula or hand-computed-truth-table oracle needs no execution at all — prefer it when the ecosystem's standalone runtime is unavailable. 4. **No-oracle degradation**: when the domain genuinely has no independent oracle (novel business logic), verify via raw-value assertions against hand-computed constants AND property / invariant coverage (monotonicity, symmetry, idempotence, round-trip, containment) AND adversarial / non-finite / out-of-range inputs. Reflect any residual uncertainty in the Caveats field (PASS-WITH-CAVEATS) rather than silently trusting a self-confirming test. -5. **Adversarial coverage (every externally-fed AC — computational or behavioral, broadened M3)**: when an AC's value OR observable behaviour comes from a function that takes external / untrusted input — whether the AC is computational (a computed value) or behavioral (a returned value, status code, thrown error, wire payload) — the AC's tests MUST also exercise adversarial / non-finite / out-of-range inputs (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range / out-of-gamut). FAIL a computational or behavioral AC on such a function that ships zero adversarial coverage, with a feedback note — this is what catches DoS hangs and contract-violating outputs on bad input, not merely wrong values on good input. The coverage MUST include at least one **parse-accepted-then-overflows** vector (a value the parser ACCEPTS that yields a non-finite / out-of-range intermediate, e.g. `oklch(0.5 1e400 30)` → Infinity chroma), not just parse-rejected `NaN` / `Infinity` keyword tokens. You SHOULD independently probe one such vector through the tool under a TIME-BOUNDED watchdog — spawn a child process that calls the tool and SIGKILL it after a few seconds (a hang ⇒ FAIL), using the `.simple-workflow/scratch/` carve-out — and FAIL the AC if the tool hangs or returns a non-error success carrying null / NaN channels. Also confirm the validation guard is present across ALL sibling tools that accept the same input class — probe at least one sibling beyond the AC's primary tool; a guard in one tool but not its siblings is a FAIL. At the `+1-independent` / `>=2-independent` evidence floor (thorough / exhaustive), additionally confirm a **committed, fixed-seed** property-fuzz loop exists in the project's test files (reproducible PRNG, asserting invariants / oracle agreement across the input distribution, not only a hand-picked grid); FAIL a thorough / exhaustive computational AC whose only coverage is a handful of fixed fixtures with no committed seeded sweep. Where the ecosystem has no PRNG idiom this degrades to a Caveat, never a FAIL. +5. **Adversarial coverage (every externally-fed AC — computational or behavioral, broadened M3)**: when an AC's value OR observable behaviour comes from a function that takes external / untrusted input — whether the AC is computational (a computed value) or behavioral (a returned value, status code, thrown error, wire payload) — the AC's tests MUST also exercise adversarial / non-finite / out-of-range inputs (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range / out-of-gamut). FAIL a computational or behavioral AC on such a function that ships zero adversarial coverage, with a feedback note — this is what catches DoS hangs and contract-violating outputs on bad input, not merely wrong values on good input. The coverage MUST include at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — e.g. a numeric field whose magnitude overflows to Infinity once arithmetic is applied), not just parse-rejected `NaN` / `Infinity` keyword tokens. You SHOULD independently probe one such vector through the tool under a TIME-BOUNDED watchdog — spawn a child process that calls the tool and SIGKILL it after a few seconds (a hang ⇒ FAIL), using the `.simple-workflow/scratch/` carve-out — and FAIL the AC if the tool hangs or returns a non-error success carrying null / NaN channels. Also confirm the validation guard is present across ALL sibling tools that accept the same input class — probe at least one sibling beyond the AC's primary tool; a guard in one tool but not its siblings is a FAIL. The sibling set spans the whole product (siblings may live in separate tickets that each created a single unit), and a sibling that DELEGATES the input handling to a shared parser is NOT automatically safe: it re-exposes the boundary through its own surface (a round-trip / re-serialization path), so probe a DELEGATING sibling too and FAIL it when an input the shared parser accepted leaks (a bare error or a non-error success carrying a corrupt / non-finite value) through the delegating wrapper — delegation is NOT an automatic n/a. At the `+1-independent` / `>=2-independent` evidence floor (thorough / exhaustive), additionally confirm a **committed, fixed-seed** property-fuzz loop exists in the project's test files (reproducible PRNG, asserting invariants / oracle agreement across the input distribution, not only a hand-picked grid); FAIL a thorough / exhaustive computational AC whose only coverage is a handful of fixed fixtures with no committed seeded sweep. Where the ecosystem has no PRNG idiom this degrades to a Caveat, never a FAIL. 6. **Pre-Gate-7 / legacy degradation**: when the ticket predates Gate 7 (names no oracle and declares no fallback) OR your spawn prompt carries `Oracle verification: off`, do NOT hard-FAIL a computational AC solely for missing oracle independence — verify it by the pre-v8.2.0 path (project tests + code inspection + whatever property / adversarial coverage is present) and record a one-line Caveat that oracle independence was not verifiable from the ticket (PASS-WITH-CAVEATS), mirroring the pre-Gate-6 capability fallback below. A freshly authored or modified circular test still FAILs via the always-on R4 static rule regardless of this degradation. This requirement is **independent of the verification-depth tier** — it applies in single-verifier (`standard`) mode as well as the partition and multi-verifier (`exhaustive`) branches. The orchestrator resolves `constraints.oracle_verification` at `/impl` Step 3a and inlines it into your spawn prompt as the field `Oracle verification: {auto|off}` — read it from the prompt (like the `## Bound capabilities (per AC)` handoff); do NOT read it from disk, and when the field is absent (older orchestrator or a manual run) default to `auto` (active). When it is `off`, verify computational ACs by the pre-v8.2.0 path (project tests + code inspection) and note it in Caveats (see point 6). The R4 oracle-circularity rule in `skills/impl/references/tautological-assertion-rules.md` is the static counterpart that flags the circular test pattern in the diff; this section is the semantic, runtime counterpart. @@ -222,7 +222,7 @@ This requirement is **independent of the verification-depth tier** — it applie Gate 8 (`skills/create-ticket/references/ac-quality-criteria.md`) generalizes the oracle requirement to EVERY behavioral AC — an AC whose PASS/FAIL hinges on observable runtime behaviour (a returned value, emitted output, status code, rendered surface, wire payload, thrown error, side effect), not a structural fact. For every behavioral AC in scope you MUST establish PASS via at least one evidence channel independent of the implementation's own internals (defined in `skills/impl/references/evidence-channels.md`): - **EC-ORACLE** — an oracle-derived expected value (the `## Oracle Independence (computational ACs)` path above; the strongest sub-case, mandatory for computational ACs). -- **EC-DIFFERENTIAL** — cross-check against a separate reference implementation of the same contract; strongest as **algorithm-vs-algorithm** (a second, INDEPENDENT algorithm for the same contract, e.g. CSS-MINDE vs chroma-clamping) compared within tolerance — at thorough / exhaustive prefer this where a second algorithm exists, since a membership check is necessary-not-sufficient. +- **EC-DIFFERENTIAL** — cross-check against a separate reference implementation of the same contract; strongest as **algorithm-vs-algorithm** (a second, INDEPENDENT algorithm for the same contract, e.g. two independent sorts; two serializers) compared within tolerance — at thorough / exhaustive prefer this where a second algorithm exists, since a membership check is necessary-not-sufficient. - **EC-PROPERTY** — invariants over a seeded input distribution (monotonicity, symmetry, idempotence, round-trip, containment). - **EC-RUNTIME** — black-box observation through the real public / protocol boundary (the real CLI, the real MCP `Client` over a transport, the exported API, a rendered DOM), never internal handlers. - **EC-SELFDOC** — the unit's OWN declared contract (docstring / declared invariant / type annotation / advertised schema / `--help` line / README worked-example / advertised size-or-range boundary) RUN against the real build and compared to observed behaviour; FAIL on (A) drift between the unit's documented claim and its runtime behaviour, or (E) advertised boundary != enforced boundary. For a doc / README / `--help` worked-example the AC relies on, RUN it against the real build and diff stdout / exit (byte-for-byte if deterministic, explicit tolerance otherwise); for an advertised constraint, feed a FORBIDDEN value (must be rejected) and an ALLOWED value (must be accepted) to the real boundary. This is the standing channel for Gate 9 rows R3 / R4 and is a specialization layered on EC-RUNTIME (not a member of the four-channel naming set). Use the `.simple-workflow/scratch/` carve-out (below) to run the example / probe the boundary; **fail-open** — when the build cannot be exercised or the unit advertises no example / boundary, record a one-line Caveat (PASS-WITH-CAVEATS), never a force-FAIL for an example or boundary that does not exist. (The dedicated `doc-verifier` agent specialises in this channel when the orchestrator spawns it; you apply it inline as one of your behavioral-AC evidence channels.) @@ -349,8 +349,9 @@ attitude — gather evidence through your assigned channel: independently derive >=1 expected value from an oracle that does NOT share the implementation's core and compare against the RAW pre-rounding output with an explicit tolerance (the Gate 7 oracle probe, full force), and fuzz - at least one parse-accepted-then-overflows vector (e.g. - `oklch(0.5 1e400 30)`) under a time-bounded watchdog; FAIL on a hang or a + at least one parse-accepted-then-overflows vector (an input the parser + ACCEPTS that yields a non-finite / out-of-range intermediate after a + conversion) under a time-bounded watchdog; FAIL on a hang or a non-error success carrying null / NaN fields. The scratch carve-out under `.simple-workflow/scratch/` is permitted for the oracle probe. At thorough / exhaustive derive two mutually-validated oracles (>=1 first-principles), @@ -394,10 +395,21 @@ single pass under-checks: under a time-bounded watchdog. When the unit builds a structure (object / map / record) from untrusted input — keys derived from CSV headers, parsed JSON, or form / query / YAML fields — also probe hostile KEYS, not only hostile values: - prototype-pollution / accessor keys (`__proto__`, `constructor`, `prototype`), - duplicate / colliding keys, and empty / non-string keys; a key that silently - drops its column, mutates the prototype, or is swallowed is a robustness defect - (use `Object.create(null)` / `Object.defineProperty` / a `Map`). + an accessor / reserved key the host structure treats specially (the + prototype-pollution class), duplicate / colliding keys, and empty / non-string + keys; a key that silently drops its column, causes a structure-metadata + mutation, or is swallowed is a robustness defect (use a null-prototype / + own-properties-only container or a Map-equivalent). Where a + boundary is advertised **strict / canonical / exact** OR parses a number + through a lenient numeric primitive, also probe + **strictness-leniency**: feed inputs that satisfy the rules' letter yet exceed + the advertised surface — an out-of-alphabet symbol a permissive matcher + accepts (a non-ASCII / homoglyph numeral before a unit), a sign / whitespace + decoration a lenient primitive strips, and a + structurally-valid-but-non-canonical form the canonical writer would never + emit — and FAIL the unit when its enforced boundary is wider + than the strictness it advertises (accepted silently AND not + normalized-idempotent), not only when a value is corrupted. - **L-CONTRACT-CONFORMANCE** — does each generated unit's observable behaviour match its OWN stated description / declared schema / documented contract (a function that does not do what its name and doc-comment claim; a tool whose diff --git a/agents/ac-evaluator.md b/agents/ac-evaluator.md index 1010ce4..53196ee 100644 --- a/agents/ac-evaluator.md +++ b/agents/ac-evaluator.md @@ -206,11 +206,11 @@ A **computational AC** is one whose PASS/FAIL hinges on a COMPUTED numeric or al For every computational AC in scope, a green project test suite is **necessary but NOT sufficient**. You MUST independently establish the expected value and compare it against the implementation's RAW output: -1. **Independent oracle**: compute at least one expected value from an oracle that does NOT share the implementation's core — a third-party reference library (e.g. `colorjs.io` cross-checking a culori-based engine), a published formula / standard you apply from first principles, or a hand-computed truth table with a cited source. The AC body or its Implementation Notes (per Gate 7) names the oracle; use it (a runtime oracle Skill, if one was bound, would also appear in `## Bound capabilities (per AC)`). NEVER take the implementation's own output (directly, via an alias, or by re-reading a field the code already rounded) as the expected value — that is the oracle-circularity defect this gate exists to catch. When your spawn prompt's `Evidence floor:` is `+1-independent` or `>=2-independent` (the `thorough` / `exhaustive` tiers) AND the AC is a standard-backed computational AC, require **two or more mutually-validated oracles** with **at least one derived from first principles** (the spec formula, hand-implemented, no library) and confirm they agree within an explicit tolerance before trusting either; FAIL a `thorough` / `exhaustive` standard-backed computational AC whose only independent evidence is a single library oracle. Build the second / first-principles oracle yourself under `.simple-workflow/scratch/` per the carve-out (shape: `skills/impl/references/independent-oracle-harness.md`). Where the domain has no published spec or no second independent oracle, the single-oracle path stands — record a Caveat (PASS-WITH-CAVEATS), never FAIL for an oracle that does not exist. **Strongest-derivation preference (all tiers, M3)**: when the AC's contract is derivable from a published spec / formula, PREFER a first-principles oracle (the spec formula, hand-implemented, no library) over a sibling reference library even at the `standard` floor where a single oracle suffices — a library oracle silently inherits that library's conventions. Record the **oracle-kind** you actually used — `first-principles | sibling | hand | none` (`none` = no independent oracle exists for this domain, the degradation path) — and surface it in the per-AC `[ORACLE-AUDIT]` line (below). +1. **Independent oracle**: compute at least one expected value from an oracle that does NOT share the implementation's core — a third-party reference library, a published formula / standard you apply from first principles, or a hand-computed truth table with a cited source. The AC body or its Implementation Notes (per Gate 7) names the oracle; use it (a runtime oracle Skill, if one was bound, would also appear in `## Bound capabilities (per AC)`). NEVER take the implementation's own output (directly, via an alias, or by re-reading a field the code already rounded) as the expected value — that is the oracle-circularity defect this gate exists to catch. When your spawn prompt's `Evidence floor:` is `+1-independent` or `>=2-independent` (the `thorough` / `exhaustive` tiers) AND the AC is a standard-backed computational AC, require **two or more mutually-validated oracles** with **at least one derived from first principles** (the spec formula, hand-implemented, no library) and confirm they agree within an explicit tolerance before trusting either; FAIL a `thorough` / `exhaustive` standard-backed computational AC whose only independent evidence is a single library oracle. Build the second / first-principles oracle yourself under `.simple-workflow/scratch/` per the carve-out (shape: `skills/impl/references/independent-oracle-harness.md`). Where the domain has no published spec or no second independent oracle, the single-oracle path stands — record a Caveat (PASS-WITH-CAVEATS), never FAIL for an oracle that does not exist. **Strongest-derivation preference (all tiers, M3)**: when the AC's contract is derivable from a published spec / formula, PREFER a first-principles oracle (the spec formula, hand-implemented, no library) over a sibling reference library even at the `standard` floor where a single oracle suffices — a library oracle silently inherits that library's conventions. Record the **oracle-kind** you actually used — `first-principles | sibling | hand | none` (`none` = no independent oracle exists for this domain, the degradation path) — and surface it in the per-AC `[ORACLE-AUDIT]` line (below). 2. **Raw, pre-rounding comparison**: compare the implementation's raw output (before display rounding / formatting) against the oracle value with an explicit tolerance (e.g. `|raw − oracle| ≤ 1e-6`). If the project's tests assert only on a display-rounded value, or re-threshold a field the code itself rounds (e.g. asserting `result.ratio >= target` on the code's 2-decimal `ratio`), treat the AC as NOT verified by those tests and FAIL it with feedback to compare the raw value against an independent oracle. 3. **Probe permitted**: write a throwaway oracle probe under the gitignored `.simple-workflow/scratch/` directory (per the oracle-probe carve-out above) when a one-off computation is the fastest way to derive the expected value. Discard it after the round; never import-and-rubber-stamp the implementation. Invoke a JS/TS probe via `node .simple-workflow/scratch/probe.mjs` or `npx -y tsx .simple-workflow/scratch/probe.ts`, and a Python probe via `python3 .simple-workflow/scratch/probe.py` (these runtimes are granted in this agent's `tools:` allowlist for scratch probes only). A published-formula or hand-computed-truth-table oracle needs no execution at all — prefer it when the ecosystem's standalone runtime is unavailable. 4. **No-oracle degradation**: when the domain genuinely has no independent oracle (novel business logic), verify via raw-value assertions against hand-computed constants AND property / invariant coverage (monotonicity, symmetry, idempotence, round-trip, containment) AND adversarial / non-finite / out-of-range inputs. Reflect any residual uncertainty in the Caveats field (PASS-WITH-CAVEATS) rather than silently trusting a self-confirming test. -5. **Adversarial coverage (every externally-fed AC — computational or behavioral, broadened M3)**: when an AC's value OR observable behaviour comes from a function that takes external / untrusted input — whether the AC is computational (a computed value) or behavioral (a returned value, status code, thrown error, wire payload) — the AC's tests MUST also exercise adversarial / non-finite / out-of-range inputs (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range / out-of-gamut). FAIL a computational or behavioral AC on such a function that ships zero adversarial coverage, with a feedback note — this is what catches DoS hangs and contract-violating outputs on bad input, not merely wrong values on good input. The coverage MUST include at least one **parse-accepted-then-overflows** vector (a value the parser ACCEPTS that yields a non-finite / out-of-range intermediate, e.g. `oklch(0.5 1e400 30)` → Infinity chroma), not just parse-rejected `NaN` / `Infinity` keyword tokens. You SHOULD independently probe one such vector through the tool under a TIME-BOUNDED watchdog — spawn a child process that calls the tool and SIGKILL it after a few seconds (a hang ⇒ FAIL), using the `.simple-workflow/scratch/` carve-out — and FAIL the AC if the tool hangs or returns a non-error success carrying null / NaN channels. Also confirm the validation guard is present across ALL sibling tools that accept the same input class — probe at least one sibling beyond the AC's primary tool; a guard in one tool but not its siblings is a FAIL. At the `+1-independent` / `>=2-independent` evidence floor (thorough / exhaustive), additionally confirm a **committed, fixed-seed** property-fuzz loop exists in the project's test files (reproducible PRNG, asserting invariants / oracle agreement across the input distribution, not only a hand-picked grid); FAIL a thorough / exhaustive computational AC whose only coverage is a handful of fixed fixtures with no committed seeded sweep. Where the ecosystem has no PRNG idiom this degrades to a Caveat, never a FAIL. +5. **Adversarial coverage (every externally-fed AC — computational or behavioral, broadened M3)**: when an AC's value OR observable behaviour comes from a function that takes external / untrusted input — whether the AC is computational (a computed value) or behavioral (a returned value, status code, thrown error, wire payload) — the AC's tests MUST also exercise adversarial / non-finite / out-of-range inputs (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range / out-of-gamut). FAIL a computational or behavioral AC on such a function that ships zero adversarial coverage, with a feedback note — this is what catches DoS hangs and contract-violating outputs on bad input, not merely wrong values on good input. The coverage MUST include at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — e.g. a numeric field whose magnitude overflows to Infinity once arithmetic is applied), not just parse-rejected `NaN` / `Infinity` keyword tokens. You SHOULD independently probe one such vector through the tool under a TIME-BOUNDED watchdog — spawn a child process that calls the tool and SIGKILL it after a few seconds (a hang ⇒ FAIL), using the `.simple-workflow/scratch/` carve-out — and FAIL the AC if the tool hangs or returns a non-error success carrying null / NaN channels. Also confirm the validation guard is present across ALL sibling tools that accept the same input class — probe at least one sibling beyond the AC's primary tool; a guard in one tool but not its siblings is a FAIL. The sibling set spans the whole product (siblings may live in separate tickets that each created a single unit), and a sibling that DELEGATES the input handling to a shared parser is NOT automatically safe: it re-exposes the boundary through its own surface (a round-trip / re-serialization path), so probe a DELEGATING sibling too and FAIL it when an input the shared parser accepted leaks (a bare error or a non-error success carrying a corrupt / non-finite value) through the delegating wrapper — delegation is NOT an automatic n/a. At the `+1-independent` / `>=2-independent` evidence floor (thorough / exhaustive), additionally confirm a **committed, fixed-seed** property-fuzz loop exists in the project's test files (reproducible PRNG, asserting invariants / oracle agreement across the input distribution, not only a hand-picked grid); FAIL a thorough / exhaustive computational AC whose only coverage is a handful of fixed fixtures with no committed seeded sweep. Where the ecosystem has no PRNG idiom this degrades to a Caveat, never a FAIL. 6. **Pre-Gate-7 / legacy degradation**: when the ticket predates Gate 7 (names no oracle and declares no fallback) OR your spawn prompt carries `Oracle verification: off`, do NOT hard-FAIL a computational AC solely for missing oracle independence — verify it by the pre-v8.2.0 path (project tests + code inspection + whatever property / adversarial coverage is present) and record a one-line Caveat that oracle independence was not verifiable from the ticket (PASS-WITH-CAVEATS), mirroring the pre-Gate-6 capability fallback below. A freshly authored or modified circular test still FAILs via the always-on R4 static rule regardless of this degradation. This requirement is **independent of the verification-depth tier** — it applies in single-verifier (`standard`) mode as well as the partition and multi-verifier (`exhaustive`) branches. The orchestrator resolves `constraints.oracle_verification` at `/impl` Step 3a and inlines it into your spawn prompt as the field `Oracle verification: {auto|off}` — read it from the prompt (like the `## Bound capabilities (per AC)` handoff); do NOT read it from disk, and when the field is absent (older orchestrator or a manual run) default to `auto` (active). When it is `off`, verify computational ACs by the pre-v8.2.0 path (project tests + code inspection) and note it in Caveats (see point 6). The R4 oracle-circularity rule in `skills/impl/references/tautological-assertion-rules.md` is the static counterpart that flags the circular test pattern in the diff; this section is the semantic, runtime counterpart. @@ -222,7 +222,7 @@ This requirement is **independent of the verification-depth tier** — it applie Gate 8 (`skills/create-ticket/references/ac-quality-criteria.md`) generalizes the oracle requirement to EVERY behavioral AC — an AC whose PASS/FAIL hinges on observable runtime behaviour (a returned value, emitted output, status code, rendered surface, wire payload, thrown error, side effect), not a structural fact. For every behavioral AC in scope you MUST establish PASS via at least one evidence channel independent of the implementation's own internals (defined in `skills/impl/references/evidence-channels.md`): - **EC-ORACLE** — an oracle-derived expected value (the `## Oracle Independence (computational ACs)` path above; the strongest sub-case, mandatory for computational ACs). -- **EC-DIFFERENTIAL** — cross-check against a separate reference implementation of the same contract; strongest as **algorithm-vs-algorithm** (a second, INDEPENDENT algorithm for the same contract, e.g. CSS-MINDE vs chroma-clamping) compared within tolerance — at thorough / exhaustive prefer this where a second algorithm exists, since a membership check is necessary-not-sufficient. +- **EC-DIFFERENTIAL** — cross-check against a separate reference implementation of the same contract; strongest as **algorithm-vs-algorithm** (a second, INDEPENDENT algorithm for the same contract, e.g. two independent sorts; two serializers) compared within tolerance — at thorough / exhaustive prefer this where a second algorithm exists, since a membership check is necessary-not-sufficient. - **EC-PROPERTY** — invariants over a seeded input distribution (monotonicity, symmetry, idempotence, round-trip, containment). - **EC-RUNTIME** — black-box observation through the real public / protocol boundary (the real CLI, the real MCP `Client` over a transport, the exported API, a rendered DOM), never internal handlers. - **EC-SELFDOC** — the unit's OWN declared contract (docstring / declared invariant / type annotation / advertised schema / `--help` line / README worked-example / advertised size-or-range boundary) RUN against the real build and compared to observed behaviour; FAIL on (A) drift between the unit's documented claim and its runtime behaviour, or (E) advertised boundary != enforced boundary. For a doc / README / `--help` worked-example the AC relies on, RUN it against the real build and diff stdout / exit (byte-for-byte if deterministic, explicit tolerance otherwise); for an advertised constraint, feed a FORBIDDEN value (must be rejected) and an ALLOWED value (must be accepted) to the real boundary. This is the standing channel for Gate 9 rows R3 / R4 and is a specialization layered on EC-RUNTIME (not a member of the four-channel naming set). Use the `.simple-workflow/scratch/` carve-out (below) to run the example / probe the boundary; **fail-open** — when the build cannot be exercised or the unit advertises no example / boundary, record a one-line Caveat (PASS-WITH-CAVEATS), never a force-FAIL for an example or boundary that does not exist. (The dedicated `doc-verifier` agent specialises in this channel when the orchestrator spawns it; you apply it inline as one of your behavioral-AC evidence channels.) @@ -349,8 +349,9 @@ attitude — gather evidence through your assigned channel: independently derive >=1 expected value from an oracle that does NOT share the implementation's core and compare against the RAW pre-rounding output with an explicit tolerance (the Gate 7 oracle probe, full force), and fuzz - at least one parse-accepted-then-overflows vector (e.g. - `oklch(0.5 1e400 30)`) under a time-bounded watchdog; FAIL on a hang or a + at least one parse-accepted-then-overflows vector (an input the parser + ACCEPTS that yields a non-finite / out-of-range intermediate after a + conversion) under a time-bounded watchdog; FAIL on a hang or a non-error success carrying null / NaN fields. The scratch carve-out under `.simple-workflow/scratch/` is permitted for the oracle probe. At thorough / exhaustive derive two mutually-validated oracles (>=1 first-principles), @@ -394,10 +395,21 @@ single pass under-checks: under a time-bounded watchdog. When the unit builds a structure (object / map / record) from untrusted input — keys derived from CSV headers, parsed JSON, or form / query / YAML fields — also probe hostile KEYS, not only hostile values: - prototype-pollution / accessor keys (`__proto__`, `constructor`, `prototype`), - duplicate / colliding keys, and empty / non-string keys; a key that silently - drops its column, mutates the prototype, or is swallowed is a robustness defect - (use `Object.create(null)` / `Object.defineProperty` / a `Map`). + an accessor / reserved key the host structure treats specially (the + prototype-pollution class), duplicate / colliding keys, and empty / non-string + keys; a key that silently drops its column, causes a structure-metadata + mutation, or is swallowed is a robustness defect (use a null-prototype / + own-properties-only container or a Map-equivalent). Where a + boundary is advertised **strict / canonical / exact** OR parses a number + through a lenient numeric primitive, also probe + **strictness-leniency**: feed inputs that satisfy the rules' letter yet exceed + the advertised surface — an out-of-alphabet symbol a permissive matcher + accepts (a non-ASCII / homoglyph numeral before a unit), a sign / whitespace + decoration a lenient primitive strips, and a + structurally-valid-but-non-canonical form the canonical writer would never + emit — and FAIL the unit when its enforced boundary is wider + than the strictness it advertises (accepted silently AND not + normalized-idempotent), not only when a value is corrupted. - **L-CONTRACT-CONFORMANCE** — does each generated unit's observable behaviour match its OWN stated description / declared schema / documented contract (a function that does not do what its name and doc-comment claim; a tool whose diff --git a/agents/decomposer.md b/agents/decomposer.md index 5c6bcf4..2635fee 100644 --- a/agents/decomposer.md +++ b/agents/decomposer.md @@ -6,7 +6,7 @@ tools: - Grep - Glob - Skill -model: opus +model: inherit maxTurns: 20 --- @@ -66,6 +66,10 @@ For EACH ticket above, ALSO surface a peer-set hint (Gate 10 upstream signal for - peer_set: true | false — `true` when this ticket's scope creates `>=2` analogous sibling units in ONE category (peer tools / endpoints / subcommands / functions sharing an output surface); `false` for a single-unit ticket or units that form no analogous sibling set. shared_conventions: <1-line hint, ONLY when peer_set is true> — the cross-unit convention the peers should share (e.g. "single error envelope across the 3 parse tools", "one success wrapper for the 4 list endpoints"). Omit this sub-line entirely when peer_set is false. +AFTER the per-ticket list, ALWAYS surface ONE cross-ticket input-boundary hint spanning the WHOLE ticket set (the Gate 7 sibling-guard / Gate 9 upstream signal — you are the only agent that sees every ticket at once, so only you can observe this across ticket boundaries). This line is MANDATORY-PRESENT (emit `shared_input_boundary: none` when nothing is shared — never omit it), mirroring how `peer_set:` is mandatory per ticket; it is an advisory hint emitted UNCONDITIONALLY (you read no policy), exactly like `peer_set:`: + +- shared_input_boundary: — emit a class line when `>=2` DIFFERENT tickets above each create a unit that consumes ONE common external input class (the same parsed format / value-type / wire shape), INCLUDING the case where each such ticket creates only a SINGLE unit (so `peer_set` is `false` for each) — this is the cross-ticket sibling set the per-ticket `peer_set` cannot see. Each class line names the shared input class abstractly + the sibling ticket ids: `: [-part-N, -part-M, ...]`. A sibling that DELEGATES the input handling to a shared parser created in another ticket STILL belongs on this line (delegation does not remove it from the shared-input-class family). NOTE (model-judgment caveat, same fragility class as the Gate 9 / Gate 10 evaluator notes): 'which tickets share an input class' is your judgment over the free-text scopes, not a grep — a downstream reader MUST NOT treat the presence or absence of a class line as mechanically authoritative. + ## Decomposition principles 1. Each ticket must describe a coherent, independently-deployable unit. Never produce a ticket with fewer than 2 latent ACs worth of scope — if a Work Unit is too thin, merge it with a neighbor. diff --git a/agents/implementer.md b/agents/implementer.md index 8a7fb13..b33fc07 100644 --- a/agents/implementer.md +++ b/agents/implementer.md @@ -1,6 +1,6 @@ --- name: implementer -description: "Implement code changes following a plan. Opus model for L/XL tickets, Sonnet for S/M." +description: "Implement code changes following a plan. Always runs on the opus model." model: opus maxTurns: 45 --- @@ -26,7 +26,7 @@ After implementing, run the project's lint command (as defined in CLAUDE.md or p After lint passes, run the project's test command (as defined in CLAUDE.md or project conventions). If tests fail, fix and re-run (max 3 attempts). -When writing these tests, you MUST follow the positive rubric in `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root). For any **computational AC** (one whose PASS/FAIL hinges on a computed numeric/algorithmic value — a ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (a reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (a value the parser ACCEPTS that yields a non-finite / out-of-range intermediate, e.g. `oklch(0.5 1e400 30)` → Infinity chroma), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). +When writing these tests, you MUST follow the positive rubric in `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root). For any **computational AC** (one whose PASS/FAIL hinges on a computed numeric/algorithmic value — a ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (a reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — a `NaN` or `Infinity` sentinel surfacing downstream of an accepted value), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). Do NOT include self-assessment, subjective comments, or quality judgments in your return value. Report only factual information. diff --git a/agents/planner.md b/agents/planner.md index 366195f..b6e5aea 100644 --- a/agents/planner.md +++ b/agents/planner.md @@ -1,7 +1,7 @@ --- name: planner description: "Create detailed implementation plans for features and refactoring." -model: opus +model: inherit maxTurns: 30 --- @@ -55,7 +55,7 @@ After the Gate 6.5 probe completeness cross-check passes, run this oracle-indepe a. Verify the AC body OR its Implementation Notes names an **oracle independent of the implementation** (a third-party reference library that does not share the implementation's core, a published formula / standard, or a hand-computed truth table with a cited source) AND specifies a **raw, pre-rounding** comparison with an explicit tolerance. Re-thresholding a field the implementation itself rounds (e.g. asserting `result.ratio >= target` on the code's 2-decimal `ratio`) is a Gate 7 FAIL. For a standard-backed computational AC expected to resolve to the `thorough` / `exhaustive` evidence_floor (a critical-domain / shared-core / high-stakes computational AC — see `skills/impl/references/verification-depth.md` criticality floor), prefer naming **two mutually-validated oracles** (one first-principles) so the downstream verifier can satisfy the multi-oracle floor; where only one independent oracle exists, say so. Where a second independent ALGORITHM for the contract exists, prefer naming it so the verifier can run an algorithm-vs-algorithm differential (membership alone is necessary-not-sufficient). This is authoring guidance, not a force-FAIL — Gate 7 still passes a single named oracle at draft time. b. If no independent oracle exists for the domain, declare the **no-oracle fallback** explicitly in the AC / Implementation Notes: raw-value assertions with tolerance against hand-computed constants AND property / invariant coverage (monotonicity, symmetry, idempotence, round-trip, containment) AND adversarial / non-finite / out-of-range inputs. State which path applies. c. If a computational AC names neither an oracle (+ raw-value tolerance) nor the no-oracle fallback, EITHER revise it to do so, OR rewrite it as a static AC (file-grep / counter / exit-code). Emitting a computational AC with no oracle, no fallback, and no static rewrite is a Gate 7 FAIL. Purely structural ACs are `n/a` for Gate 7. - d. For a **computational or behavioral** AC whose value or behaviour comes from a function taking external / untrusted input (broadened in M3, v8.4.0+), also require adversarial / non-finite / out-of-range coverage (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range); a computational or behavioral AC on such a function with no adversarial coverage is a Gate 7 FAIL — this catches DoS hangs and bad-input contract violations, not just wrong values on good input. The required coverage MUST include a parse-ACCEPTED-then-overflows vector (e.g. `oklch(0.5 1e400 30)`), not only parse-rejected `NaN` / `Infinity` tokens. If the function shares an input parser with sibling tools, require the guard in the SHARED boundary OR in every sibling (not just one). + d. For a **computational or behavioral** AC whose value or behaviour comes from a function taking external / untrusted input (broadened in M3, v8.4.0+), also require adversarial / non-finite / out-of-range coverage (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range); a computational or behavioral AC on such a function with no adversarial coverage is a Gate 7 FAIL — this catches DoS hangs and bad-input contract violations, not just wrong values on good input. The required coverage MUST include a parse-ACCEPTED-then-overflows vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — a `NaN` or `Infinity` sentinel surfacing downstream of an accepted value), not only parse-rejected `NaN` / `Infinity` tokens. If the function shares an input parser with sibling tools, require the guard in the SHARED boundary OR in every sibling (not just one). When your spawn prompt forwards a cross-ticket `shared_input_boundary` membership for this ticket (the input class is consumed by sibling tickets too, even ones that each create only a single unit), this ticket's unit is a member of that shared-input-class family even if it DELEGATES the input handling to a shared parser created in another ticket: it MUST carry its OWN hostile / accept-set row (the Gate 9 R2 strictness-leniency probe — non-ASCII / Unicode-digit numeral, leading-zero / non-canonical form, sign / whitespace) for that input class, OR a one-line JUSTIFIED `n/a` reason a reviewer can challenge — delegation is NOT an automatic n/a, never a silent skip, and 'delegates to the shared parser' is itself NOT an acceptable n/a reason (the row is owed precisely because the delegating surface re-exposes the boundary). ## Pre-emit Self-Audit (ticket drafts: Gate 8 independent evidence) diff --git a/agents/test-writer.md b/agents/test-writer.md index dd9d5f0..07d4e81 100644 --- a/agents/test-writer.md +++ b/agents/test-writer.md @@ -17,7 +17,7 @@ You are a test engineer. Write and run tests following existing project patterns ## Test Design Rubric -Follow `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root) as the positive rubric for test authoring. For any **computational** target (a computed numeric/algorithmic value — ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (a value the parser ACCEPTS that yields a non-finite / out-of-range intermediate, e.g. `oklch(0.5 1e400 30)` → Infinity chroma), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). +Follow `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root) as the positive rubric for test authoring. For any **computational** target (a computed numeric/algorithmic value — ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — a `NaN` or `Infinity` sentinel surfacing downstream of an accepted value), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). ## Context Conservation Protocol diff --git a/agents/ticket-evaluator.md b/agents/ticket-evaluator.md index da9bf71..aaeae5b 100644 --- a/agents/ticket-evaluator.md +++ b/agents/ticket-evaluator.md @@ -56,7 +56,7 @@ Return format: - [x] Size Fit: description - [x] Capability Mapping: description (Gate 6 — applies only when at least one AC is runtime/visual per the canonical classifier; mark `n/a` when no AC triggers the classifier) - [x] Probe Completeness: description (Gate 6.5 — verifies every entry in the planner's `Available user skills:` / `Available MCP servers:` probe is classified Bound / Advisory / Skipped in the ticket; mark `n/a` when both probes report `(none)` or when the ticket pre-dates Gate 6.5) -- [x] Oracle Independence: description (Gate 7 — applies only when at least one AC is computational (a computed numeric/algorithmic value) per the canonical classifier; verifies each computational AC names an oracle independent of the implementation + a raw-value tolerance, OR declares the no-oracle fallback, AND (for a computational or behavioral AC on a function taking external input — broadened M3) requires adversarial / non-finite / out-of-range coverage — including at least one parse-accepted-then-overflows vector (e.g. `oklch(0.5 1e400 30)`), not only parse-rejected `NaN` / `Infinity` tokens — plus the sibling-guard requirement (a shared input-validation guard required across every sibling tool sharing the input boundary, not just one); and, for a standard-backed computational AC expected at the `thorough` / `exhaustive` evidence_floor, prefer two mutually-validated oracles with at least one first-principles (single oracle suffices at `standard`; absence of a second oracle is a Caveat, not a FAIL); where a second independent algorithm exists, prefer an algorithm-vs-algorithm differential (membership is necessary-not-sufficient; its absence is a Caveat, not a FAIL); mark `n/a` when no AC is computational, when the ticket sets `constraints.oracle_verification: off`, or when the ticket pre-dates Gate 7) +- [x] Oracle Independence: description (Gate 7 — applies only when at least one AC is computational (a computed numeric/algorithmic value) per the canonical classifier; verifies each computational AC names an oracle independent of the implementation + a raw-value tolerance, OR declares the no-oracle fallback, AND (for a computational or behavioral AC on a function taking external input — broadened M3) requires adversarial / non-finite / out-of-range coverage — including at least one parse-accepted-then-overflows vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion), not only parse-rejected `NaN` / `Infinity` tokens — plus the sibling-guard requirement (a shared input-validation guard required across every sibling tool sharing the input boundary — a set that is NOT confined to one ticket: when the spawn prompt forwards a cross-ticket `shared_input_boundary` membership for this ticket, the named siblings may live in separate tickets that each created a single unit — not just one; a member that DELEGATES to a shared parser still owes its own hostile / accept-set row or a justified `n/a` a reviewer can challenge, since delegation is NOT an automatic n/a and 'delegates to the shared parser' is not itself an acceptable n/a reason); and, for a standard-backed computational AC expected at the `thorough` / `exhaustive` evidence_floor, prefer two mutually-validated oracles with at least one first-principles (single oracle suffices at `standard`; absence of a second oracle is a Caveat, not a FAIL); where a second independent algorithm exists, prefer an algorithm-vs-algorithm differential (membership is necessary-not-sufficient; its absence is a Caveat, not a FAIL); mark `n/a` when no AC is computational, when the ticket sets `constraints.oracle_verification: off`, or when the ticket pre-dates Gate 7) - [x] Peer-Set Uniformity: description (Gate 10 — applies only when the ticket's `### Scope` creates a `>=2`-peer set (a family of analogous sibling units in one category — peer tools / endpoints / subcommands / exported functions sharing an output surface) per the canonical classifier; verifies the ticket carries `>=1` UNIFIED-convention AC over the set (single error convention / single success-envelope shape / single vocabulary per concept / single wrapper for repeated boilerplate, mechanically grep/AST-verifiable across every peer) OR a one-line `n/a` justification under `#### Peer-Set Uniformity (Gate 10)` — a peer set with neither is a FAIL, a justified `n/a` is a PASS. Gate 10 ENUMERATES coverage presence for the peer set; it does NOT re-grade which convention was unified (the diff-time L-UNIFORMITY lens grades the code) and MUST NOT FAIL merely because the evaluator would have chosen a different convention. Disjoint from Gate 7's sibling-INPUT-guard and from Gate 9's per-boundary matrix. Mark `n/a` when the Scope creates `<2` peers, when the ticket sets `constraints.peer_uniformity: off`, or when the ticket pre-dates Gate 10) - [x] Failure-Class Coverage: description (Gate 9 — applies only when the ticket's `### Scope` touches >=1 external boundary (public / exported function, CLI subcommand, endpoint, exported API symbol, file-format / wire-format, parser, or a `>=2`-peer sibling set) per the canonical classifier; verifies the `#### Failure-Class Coverage (Gate 9)` matrix carries, for EACH such boundary, four rows (R1 FULL-DOMAIN INVARIANT, R2 HOSTILE + BOUNDED TERMINATION + RESOURCE-CAP, R3 DESCRIPTION-MATCHES-BEHAVIOR, R4 DOC/INTERFACE TRUTHFULNESS) each resolved to >=1 AC OR a one-line `n/a` justification — a blank row is a FAIL, a justified `n/a` is a PASS. Gate 9 ENUMERATES coverage presence per boundary; it does NOT re-grade AC adequacy (Gates 1-8 do that) and MUST NOT FAIL merely because the evaluator would have written a different AC. Mark `n/a` when the ticket touches no external boundary (internal-helper-only — routine-ticket flood prevention), when the ticket sets `constraints.failure_class_coverage: off`, or when the ticket pre-dates Gate 9) - [x] Independent Evidence: description (Gate 8 — applies only when at least one AC is behavioral (PASS/FAIL hinges on observable runtime behaviour) per the canonical classifier; verifies each behavioral AC names at least one evidence channel independent of the implementation — EC-ORACLE / EC-DIFFERENTIAL / EC-PROPERTY / EC-RUNTIME per `skills/impl/references/evidence-channels.md` — OR is rewritten as a structural AC (EC-STATIC). A computational AC satisfies Gate 8 via its Gate 7 oracle. The AC's natural channel counts (a black-box CLI / API assertion is EC-RUNTIME) — do NOT FAIL a behavioral AC whose natural evidence is already independent. For a computational / algorithmic AC expected at the `thorough` / `exhaustive` evidence_floor, prefer a committed, fixed-seed property-fuzz loop over the input distribution (EC-PROPERTY); its absence is a Caveat, not a FAIL. Mark `n/a` when every AC is purely structural, when the ticket sets `constraints.independent_evidence: off`, or when the ticket pre-dates Gate 8) diff --git a/hooks/autopilot-continue.sh b/hooks/autopilot-continue.sh index 59665fd..ec8ade5 100755 --- a/hooks/autopilot-continue.sh +++ b/hooks/autopilot-continue.sh @@ -30,6 +30,10 @@ source "$SCRIPT_DIR/lib/runtime-metrics.sh" # hooks/lib/detect-policy-gate-stop.sh (single source of truth for the # model-declared policy-gate-stop marker — see AC-6 / the helper header). source "$SCRIPT_DIR/lib/detect-policy-gate-stop.sh" +# `parse_active_steps` is defined in hooks/lib/parse-state-file.sh — the WI-3 +# schema-tolerant (flat / inline-flow / nested) step parser the continuation +# driver below uses to count unfinished steps and pick the next one. +source "$SCRIPT_DIR/lib/parse-state-file.sh" # `_runtime_metrics_payload_field` is currently duplicated in # hooks/pre-compact-save.sh as `_pc_runtime_metrics_payload_field`. Both @@ -408,10 +412,15 @@ if [ "$FILE_COUNT" -ge 5 ] && [ "$NOTOOL_COUNT" -ge "$NOTOOL_THRESHOLD" ]; then exit 0 fi -# --- Check for unfinished steps --- -# Count step-level entries that are in_progress or pending -# Note: grep -c exits 1 when no matches; capture separately to avoid double output -ACTIVE_STEPS=$(grep -cE '(create-ticket|scout|impl|ship): (in_progress|pending)' "$STATE_FILE" 2>/dev/null) || ACTIVE_STEPS=0 +# --- Check for unfinished steps (WI-3 schema-tolerant) --- +# parse_active_steps (hooks/lib/parse-state-file.sh) emits one `:` +# line per in_progress/pending step across all tickets, tolerating the flat +# (`scout: in_progress`), inline-flow (`steps: {scout: in_progress, …}`), and +# nested (`scout:\n status: in_progress`) shapes. The prior inline grep matched +# only the flat/flow shapes and silently stranded a nested-form pipeline. +ACTIVE_STEP_LINES=$(parse_active_steps "$STATE_FILE" 2>/dev/null || true) +# grep -c exits 1 (and prints 0) when there are no active steps; guard it. +ACTIVE_STEPS=$(printf '%s' "$ACTIVE_STEP_LINES" | grep -c ':') || ACTIVE_STEPS=0 if [ "$ACTIVE_STEPS" -eq 0 ]; then # All step-level work done — pipeline is finished, allow stop. @@ -428,10 +437,11 @@ if [ "$ACTIVE_STEPS" -eq 0 ]; then fi # --- Determine next step to execute --- -# Priority: first in_progress step, then first pending step -NEXT_STEP=$(grep -E '(create-ticket|scout|impl|ship): in_progress' "$STATE_FILE" | head -1 | sed 's/^ *//; s/: in_progress//') || true +# Priority: first in_progress step, then first pending step. Derived from the +# same WI-3-tolerant parse_active_steps output (`:` lines). +NEXT_STEP=$(printf '%s\n' "$ACTIVE_STEP_LINES" | grep ':in_progress$' | head -1 | sed 's/:in_progress$//') || true if [ -z "$NEXT_STEP" ]; then - NEXT_STEP=$(grep -E '(create-ticket|scout|impl|ship): pending' "$STATE_FILE" | head -1 | sed 's/^ *//; s/: pending//') || true + NEXT_STEP=$(printf '%s\n' "$ACTIVE_STEP_LINES" | grep ':pending$' | head -1 | sed 's/:pending$//') || true fi NEXT_STEP="${NEXT_STEP:-unknown}" diff --git a/hooks/lib/audit-coverage.sh b/hooks/lib/audit-coverage.sh index afd115f..af6b843 100644 --- a/hooks/lib/audit-coverage.sh +++ b/hooks/lib/audit-coverage.sh @@ -127,6 +127,8 @@ audit_coverage_emit() { # one that will be committed, not the on-disk file contents). local entries="" local count=0 + # 'line' is an unused read placeholder; the other names are consumed in the loop below. + # shellcheck disable=SC2034 local line raw_status path_new path_old status_letter blob # Use a process substitution to avoid the subshell trap of `| while`. while IFS=$'\t' read -r raw_status path_new path_old; do @@ -277,6 +279,8 @@ if isinstance(files, list): PYEOF ) || py_out="" if [ -n "$py_out" ]; then + # 'py_line' is an unused read placeholder; the other names are consumed below. + # shellcheck disable=SC2034 local py_line py_kind py_a py_b py_c while IFS=$'\t' read -r py_kind py_a py_b py_c; do case "$py_kind" in @@ -361,6 +365,8 @@ PYEOF local total_cov=${#cov_paths[@]} # Index coverage entries by path for lookup. + # Reserved lookup placeholders, intentionally unassigned here. + # shellcheck disable=SC2034 local cov_blob_for cov_status_for local idx=0 declare -A cov_idx=() @@ -370,6 +376,8 @@ PYEOF done # 1. For each commit-side file: must be covered AND blob must match. + # 'reason' is reserved for future diagnostics; the others are consumed below. + # shellcheck disable=SC2034 local commit_file head_blob audit_blob audit_status reason local short_audit short_head if [ -n "$commit_changes" ]; then @@ -399,6 +407,8 @@ PYEOF idx=0 while [ "$idx" -lt "$total_cov" ]; do audit_blob="${cov_blobs[$idx]}" + # 'audit_status' is captured for symmetry/future use; not read on this path. + # shellcheck disable=SC2034 audit_status="${cov_statuses[$idx]}" local cov_path="${cov_paths[$idx]}" head_blob=$(git rev-parse "HEAD:$cov_path" 2>/dev/null) || head_blob="__deleted__" diff --git a/hooks/lib/parse-state-file.sh b/hooks/lib/parse-state-file.sh index 4a096df..4c09689 100755 --- a/hooks/lib/parse-state-file.sh +++ b/hooks/lib/parse-state-file.sh @@ -645,6 +645,114 @@ PY return 0 } +# --------------------------------------------------------------------------- +# Public function: parse_active_steps +# Usage: parse_active_steps +# +# Emits one line per pipeline step whose status is `in_progress` or `pending`, +# across every ticket, in document order, formatted as `:` +# (e.g. `scout:in_progress`). The autopilot Stop hook +# (`hooks/autopilot-continue.sh`) consumes this to decide whether unfinished +# step-level work remains (line count) and which step runs next (first +# `in_progress`, else first `pending`). +# +# WI-3 schema-tolerance: accepts the canonical-flat (`scout: in_progress`), +# inline-flow (`steps: {scout: in_progress, ...}`), and nested +# (`scout:\n status: in_progress`) step shapes — the same forms the +# auto-compact path tolerates — so a model schema slip does not silently +# strand the continuation driver. Returns 1 only on a missing/empty file +# argument; an empty step set is a normal rc=0 result. +# --------------------------------------------------------------------------- +parse_active_steps() { + local file="$1" + if [ -z "$file" ] || [ ! -f "$file" ]; then + return 1 + fi + + if _psf_have yq; then + yq -r ' + .tickets[].steps // {} | to_entries[] | + select((.value.status // .value) == "in_progress" + or (.value.status // .value) == "pending") | + .key + ":" + (.value.status // .value) + ' "$file" 2>/dev/null + return 0 + fi + + if _psf_have python3 && python3 -c 'import yaml' >/dev/null 2>&1; then + python3 - "$file" <<'PY' 2>/dev/null +import sys +import yaml +with open(sys.argv[1], "r", encoding="utf-8") as fh: + doc = yaml.safe_load(fh) or {} +tickets = doc.get("tickets") +if isinstance(tickets, dict): + entries = list(tickets.values()) +elif isinstance(tickets, list): + entries = tickets +else: + entries = [] +for entry in entries: + if not isinstance(entry, dict): + continue + steps = entry.get("steps") or {} + if not isinstance(steps, dict): + continue + for key, val in steps.items(): + st = val.get("status") if isinstance(val, dict) else val + if st in ("in_progress", "pending"): + print("%s:%s" % (key, st)) +PY + return 0 + fi + + # awk fallback: stateful walk, POSIX awk only. Handles flat + # (`scout: in_progress`), inline-flow (`steps: {scout: in_progress, ...}`), + # and nested (`scout:\n status: in_progress`) step shapes. Only the four + # known step keys (create-ticket|scout|impl|ship) are matched directly, so + # there is no collision with the ticket-level `status:` field; the nested + # `status:` line is consumed only while a step opener is pending (cur_key). + awk ' + BEGIN { in_tickets = 0; cur_key = "" } + /^tickets:[[:space:]]*$/ { in_tickets = 1; next } + in_tickets && /^[^[:space:]-]/ { in_tickets = 0; cur_key = "" } + in_tickets && /^[[:space:]]+steps:[[:space:]]*\{.*\}[[:space:]]*$/ { + line = $0 + sub(/^[[:space:]]+steps:[[:space:]]*\{/, "", line) + sub(/\}[[:space:]]*$/, "", line) + n = split(line, pairs, /,/) + for (i = 1; i <= n; i++) { + kv = pairs[i]; ci = index(kv, ":") + if (ci > 0) { + k = substr(kv, 1, ci - 1); v = substr(kv, ci + 1) + gsub(/^[[:space:]]+|[[:space:]]+$/, "", k) + gsub(/^[[:space:]]+|[[:space:]]+$/, "", v) + if (v == "in_progress" || v == "pending") print k ":" v + } + } + cur_key = "" + next + } + in_tickets && /^[[:space:]]+(create-ticket|scout|impl|ship):/ { + line = $0; sub(/^[[:space:]]+/, "", line); ci = index(line, ":") + k = substr(line, 1, ci - 1); v = substr(line, ci + 1) + gsub(/^[[:space:]]+|[[:space:]]+$/, "", v) + sub(/[[:space:]]+#.*$/, "", v) + if (v == "") { cur_key = k } + else { if (v == "in_progress" || v == "pending") print k ":" v; cur_key = "" } + next + } + in_tickets && cur_key != "" && /^[[:space:]]+status:[[:space:]]*/ { + line = $0; sub(/^[[:space:]]+status:[[:space:]]*/, "", line) + gsub(/^[[:space:]]+|[[:space:]]+$/, "", line) + if (line == "in_progress" || line == "pending") print cur_key ":" line + cur_key = "" + next + } + ' "$file" + return 0 +} + # --------------------------------------------------------------------------- # Public function: find_phase_state_file # Usage: find_phase_state_file [start_dir] diff --git a/hooks/lib/state-authority.sh b/hooks/lib/state-authority.sh index 04a5519..d087036 100644 --- a/hooks/lib/state-authority.sh +++ b/hooks/lib/state-authority.sh @@ -49,9 +49,16 @@ # tests), source the lib in a subshell with a controlled registry override. # --------------------------------------------------------------------------- -# Registry: hook-owned fields (shipped empty — Negative AC-2 enforced). +# Registry: hook-owned fields (Foundation 3 — proposal 4 / ST-03). +# `.runtime_metrics` is an append-only telemetry list written EXCLUSIVELY by the +# autopilot Stop / PreCompact / checkpoint hooks (see hooks/lib/runtime-metrics.sh +# header). Registering it lets pre-write/pre-edit-safety detect a model full-file +# Write/Edit that would clobber hook-appended entries (the ST-03 lost-update). +# The actual DENY is gated by SW_STATE_FIELD_GUARD_MODE in those callers +# (default `metric-only` — observe, do not block — so this enforcement ships +# opt-in and the prior no-op behaviour is the default until promoted to `on`). # --------------------------------------------------------------------------- -declare -A HOOK_OWNED_FIELDS=() +declare -A HOOK_OWNED_FIELDS=([".runtime_metrics"]=1) # --------------------------------------------------------------------------- # Internal helpers (not part of the public contract; prefix _sa_). @@ -256,8 +263,11 @@ is_hook_owned_field() { for reg_key in "${!HOOK_OWNED_FIELDS[@]}"; do # Convert * to +([!.]) so a single * matches one segment with no dots. pat=$(printf '%s' "$reg_key" | sed 's/\*/+([!.])/g') + # $pat is intentionally UNQUOTED in the case arm below — the extglob pattern must + # be expanded as a glob to match `key`; quoting it would break is_hook_owned_field. + # shellcheck disable=SC2254 case "$key" in - $pat) result=0; break ;; # UNQUOTED $pat — required for glob expansion + $pat) result=0; break ;; esac done eval "$_prev" @@ -268,6 +278,8 @@ is_hook_owned_field() { # Public function: state_field_change_blocked # --------------------------------------------------------------------------- state_field_change_blocked() { + # 'state_file' is part of the public signature but unused on this path. + # shellcheck disable=SC2034 local state_file="$1" local old_string="$2" local new_string="$3" @@ -300,8 +312,10 @@ state_field_change_blocked() { # F-BLANK: block whenever old_val is non-empty AND new_val differs, # including blank-out (new_val empty). Initial-set is already handled - # by the early-exit above. + # by the early-exit above. Echo the matched registry key so the caller + # can name the violated field in its block reason (proposal 4 / UX-10). if [ "$old_val" != "$new_val" ]; then + printf '%s\n' "$reg_key" return 0 fi done diff --git a/hooks/post-ship-state-auto-compact.sh b/hooks/post-ship-state-auto-compact.sh index c8dbfa6..30d4ec8 100755 --- a/hooks/post-ship-state-auto-compact.sh +++ b/hooks/post-ship-state-auto-compact.sh @@ -105,8 +105,11 @@ esac TOOL_PAYLOAD=$(echo "$INPUT" | jq -r '.tool_input.new_string // .tool_input.content // ""' 2>/dev/null || echo "") _detect_ship_completed_in_payload() { local payload="$1" - # Flat form: same line "ship: completed" - if printf '%s' "$payload" | grep -qE '(^|[[:space:]])ship:[[:space:]]+completed([[:space:]]|$)'; then + # Flat form: same line "ship: completed". The trailing class also accepts the + # inline-flow shape `steps: {…, ship: completed}` / `ship: completed,` (ST-11): + # `}` and `,` are valid YAML flow-mapping terminators, so without them the gate + # silently missed a template-seeded flow-form ship-completed write. + if printf '%s' "$payload" | grep -qE '(^|[[:space:]])ship:[[:space:]]+completed([[:space:],}]|$)'; then return 0 fi # Nested form: a line ending in `ship:` followed within 4 lines by @@ -182,6 +185,13 @@ while IFS= read -r TICKET_DIR; do */backlog/active/*) RESOLVED_TICKET_DIR="${RESOLVED_TICKET_DIR//\/backlog\/active\//\/backlog\/done\/}" ;; + */backlog/product_backlog/*) + # ST-02: a never-scouted ticket whose ticket_dir still holds the initial + # product_backlog form would otherwise pass the -d check (the dir exists in + # product_backlog/) and let a fabricated ship: completed inject. Rewrite to + # the done/ form so the existence check catches the state-lie. + RESOLVED_TICKET_DIR="${RESOLVED_TICKET_DIR//\/backlog\/product_backlog\//\/backlog\/done\/}" + ;; esac if [ ! -d "$RESOLVED_TICKET_DIR" ]; then echo "[POST-SHIP-STATE-AUTO-COMPACT] state-lie protection: ticket dir not in done/ ($RESOLVED_TICKET_DIR). Skipping inject — model wrote ship: completed without actually completing ship body." >&2 @@ -260,6 +270,11 @@ if [ "$PSI_MODE" != "off" ]; then */backlog/active/*) PSI_RESOLVED="${PSI_RESOLVED//\/backlog\/active\//\/backlog\/done\/}" ;; + */backlog/product_backlog/*) + # ST-02: same product_backlog-form rewrite as Gate 5 so the per-ticket + # phase-state.yaml lookup resolves to the done/ location. + PSI_RESOLVED="${PSI_RESOLVED//\/backlog\/product_backlog\//\/backlog\/done\/}" + ;; esac # Strip any trailing slash so we can append /phase-state.yaml uniformly. PSI_RESOLVED="${PSI_RESOLVED%/}" diff --git a/hooks/pre-bash-contract-guard.sh b/hooks/pre-bash-contract-guard.sh index 7141a37..54e8216 100755 --- a/hooks/pre-bash-contract-guard.sh +++ b/hooks/pre-bash-contract-guard.sh @@ -160,5 +160,51 @@ if printf '%s' "$COMMAND" | grep -qE "$GIT_COMMIT_RE"; then fi fi +# --------------------------------------------------------------------------- +# Detection 3 (knob-gated, M-03 / ST-04): Bash-mediated state-file status +# mutation. The skip-transition guard (pre-state-transition.sh) is wired only +# to Write/Edit, so a model blocked there can reroute to a raw `yq -i` / +# `sed -i` / shell-redirect on autopilot-state.yaml / phase-state.yaml and flip +# a `status:` to skipped/completed unobserved (the autopilot Stop hook then +# honours the Bash-written transition as pipeline progress). +# +# This NEW deny ships OFF-by-default. It is gated by SW_BASH_STATE_GUARD_MODE so +# the behaviour change is opt-in (matches the repo's metric-only-first rollout +# convention for intrusive guards): +# on -> emit decision:block (deny) +# metric-only -> (default) log `[PRE-BASH-CONTRACT-GUARD] metric-only: would +# deny ...` to stderr and ALLOW the call +# off -> skip detection 3 entirely +# Detections 1 and 2 above are NOT gated by this knob (the hook's NAC posture is +# preserved). A typo collapses to metric-only (the observe-only default). +STATE_GUARD_MODE="${SW_BASH_STATE_GUARD_MODE:-metric-only}" +if [ "$STATE_GUARD_MODE" != "off" ] \ + && printf '%s' "$COMMAND" | grep -qE '(autopilot-state|phase-state)\.yaml'; then + _sg_mutation=false + # `yq -i` / `sed -i` (with any flags/args before -i), or a `>` / `>>` redirect + # whose target is a state file. + if printf '%s' "$COMMAND" | grep -qE '(^|[|;&[:space:]])(yq|sed)([[:space:]]+[^|;&]*)?[[:space:]]-i([[:space:]]|=|$)'; then + _sg_mutation=true + fi + if printf '%s' "$COMMAND" | grep -qE '>>?[[:space:]]*[^[:space:]|;&]*(autopilot-state|phase-state)\.yaml'; then + _sg_mutation=true + fi + # A step/ticket status being driven to a terminal/skip value. The + # `[^[:alpha:]]{0,15}` gap tolerates `= "..."`, `: ...`, `= \"...\"`, `[].`. + _sg_transition=false + if printf '%s' "$COMMAND" | grep -qiE '(status|steps|ship|scout|impl|create-ticket)[^[:alpha:]]{0,15}(skipped|completed|failed|in_progress|in-progress)'; then + _sg_transition=true + fi + if [ "$_sg_mutation" = true ] && [ "$_sg_transition" = true ]; then + case "$STATE_GUARD_MODE" in + on) + emit_block "unauthorized_state_mutate_bash" \ + "Direct Bash mutation of a state-file status (yq -i / sed -i / redirect on autopilot-state.yaml / phase-state.yaml) bypasses the Write/Edit skip-transition guard (pre-state-transition.sh). Route state transitions through the owning Skill (/scout, /impl, /ship) or a Write/Edit so the hook-layer guards fire. Field reference: docs/state-schema.md; see also skills/autopilot/SKILL.md." ;; + metric-only|*) + printf '[PRE-BASH-CONTRACT-GUARD] metric-only: would deny unauthorized_state_mutate_bash (Bash state-file status mutation): %s\n' "${COMMAND:0:140}" >&2 ;; + esac + fi +fi + # All checks passed -> allow. exit 0 diff --git a/hooks/pre-bash-safety.sh b/hooks/pre-bash-safety.sh index bc38cb8..4a3aeed 100755 --- a/hooks/pre-bash-safety.sh +++ b/hooks/pre-bash-safety.sh @@ -1,12 +1,39 @@ #!/usr/bin/env bash set -euo pipefail + +# jq is a documented hard dependency. When it is missing this guard cannot parse +# the tool payload; rather than dying with a silent `exit 127` (which Claude Code +# treats as a non-blocking error — a fail-OPEN), resolve the behaviour through +# SW_SAFETY_JQ_MISSING_MODE (UX-11): +# on -> fail CLOSED (exit 2) with an explicit message +# metric-only -> (default) log the would-be fail-closed and ALLOW (exit 0) +# off -> silently allow (exit 0) +# A typo collapses to metric-only (the observe-only default), never to a silent +# fail-open. Default is metric-only so this hardening does not change the shipped +# fail-open behaviour until an operator opts in with `=on` (post-dogfood promote). +if ! command -v jq >/dev/null 2>&1; then + case "${SW_SAFETY_JQ_MISSING_MODE:-metric-only}" in + on) + echo "[SAFETY-JQ-MISSING] pre-bash-safety: jq not found on PATH — failing closed (exit 2). Install jq (e.g. 'brew install jq') to run this guard." >&2 + exit 2 ;; + off) + exit 0 ;; + metric-only|*) + echo "[SAFETY-JQ-MISSING] metric-only: pre-bash-safety would fail closed (exit 2) — jq not found on PATH; allowing this call. Install jq, or set SW_SAFETY_JQ_MISSING_MODE=on to enforce." >&2 + exit 0 ;; + esac +fi + INPUT=$(cat) COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty') # --- Destructive command patterns --- # Detect at any token position: start, after pipe, after semicolon, after &&/|| # Optional env/command prefix before the actual destructive command -DESTRUCTIVE='(^|[|;&]|\$\(|`)\s*(env\s+|command\s+)?(rm\s+-[A-Za-z]*[rR][A-Za-z]*f|rm\s+-[A-Za-z]*f[A-Za-z]*[rR]|rm\s+(--recursive\s+--force|--force\s+--recursive|-[A-Za-z]*[rR]\s+--force|--force\s+-[A-Za-z]*[rR]|--recursive\s+-[A-Za-z]*f|-[A-Za-z]*f\s+--recursive)|git\s+push\s+(--force|--force-with-lease|-f)\b|git\s+reset\s+--hard|git\s+clean\s+-[A-Za-z]*f|[Dd][Rr][Oo][Pp]\s+([Tt][Aa][Bb][Ll][Ee]|[Dd][Aa][Tt][Aa][Bb][Aa][Ss][Ee]))' +# `rm -r -f` / `rm -f -r` (and `-r … -f` with intervening flags) are SEPARATED +# short flags that the combined (`-rf`) and long-form alternatives below miss; +# the two `rm\s+-…\s+…-…` alternatives close that gap (F-HOOKS-04). +DESTRUCTIVE='(^|[|;&]|\$\(|`)\s*(env\s+|command\s+)?(rm\s+-[A-Za-z]*[rR][A-Za-z]*f|rm\s+-[A-Za-z]*f[A-Za-z]*[rR]|rm\s+(--recursive\s+--force|--force\s+--recursive|-[A-Za-z]*[rR]\s+--force|--force\s+-[A-Za-z]*[rR]|--recursive\s+-[A-Za-z]*f|-[A-Za-z]*f\s+--recursive)|rm\s+-[A-Za-z]*[rR][A-Za-z]*\s+(-[A-Za-z]+\s+)*-[A-Za-z]*f[A-Za-z]*|rm\s+-[A-Za-z]*f[A-Za-z]*\s+(-[A-Za-z]+\s+)*-[A-Za-z]*[rR][A-Za-z]*|git\s+push\s+(--force|--force-with-lease|-f)\b|git\s+reset\s+--hard|git\s+clean\s+-[A-Za-z]*f|[Dd][Rr][Oo][Pp]\s+([Tt][Aa][Bb][Ll][Ee]|[Dd][Aa][Tt][Aa][Bb][Aa][Ss][Ee]))' # Strip allowed pattern before checking: git reset --hard origin/ CHECKED=$(echo "$COMMAND" | sed -E 's/git +reset +--hard +origin\/[A-Za-z0-9._/-]+//g') @@ -17,7 +44,7 @@ if echo "$CHECKED" | grep -qE "$DESTRUCTIVE"; then fi # --- Indirect destructive patterns (xargs, find -exec) --- -INDIRECT_DESTRUCTIVE='(xargs\s+|find\s+.*-exec\s+)(rm\s+-[A-Za-z]*[rR][A-Za-z]*f|rm\s+-[A-Za-z]*f[A-Za-z]*[rR]|rm\s+(--recursive\s+--force|--force\s+--recursive|-[A-Za-z]*[rR]\s+--force|--force\s+-[A-Za-z]*[rR]|--recursive\s+-[A-Za-z]*f|-[A-Za-z]*f\s+--recursive))|find\s+.*-delete|find\s+.*-exec\s+(bash|sh|zsh|ksh)\s+-c\s+' +INDIRECT_DESTRUCTIVE='(xargs\s+|find\s+.*-exec\s+)(rm\s+-[A-Za-z]*[rR][A-Za-z]*f|rm\s+-[A-Za-z]*f[A-Za-z]*[rR]|rm\s+(--recursive\s+--force|--force\s+--recursive|-[A-Za-z]*[rR]\s+--force|--force\s+-[A-Za-z]*[rR]|--recursive\s+-[A-Za-z]*f|-[A-Za-z]*f\s+--recursive)|rm\s+-[A-Za-z]*[rR][A-Za-z]*\s+(-[A-Za-z]+\s+)*-[A-Za-z]*f[A-Za-z]*|rm\s+-[A-Za-z]*f[A-Za-z]*\s+(-[A-Za-z]+\s+)*-[A-Za-z]*[rR][A-Za-z]*)|find\s+.*-delete|find\s+.*-exec\s+(bash|sh|zsh|ksh)\s+-c\s+' if echo "$COMMAND" | grep -qE "$INDIRECT_DESTRUCTIVE"; then echo "Blocked: indirect destructive command not allowed: $COMMAND" >&2 diff --git a/hooks/pre-edit-safety.sh b/hooks/pre-edit-safety.sh index 8de2968..e3c59d7 100755 --- a/hooks/pre-edit-safety.sh +++ b/hooks/pre-edit-safety.sh @@ -1,11 +1,40 @@ #!/usr/bin/env bash set -euo pipefail + +# jq is a documented hard dependency. When it is missing this guard cannot parse +# the tool payload; rather than dying with a silent `exit 127` (which Claude Code +# treats as a non-blocking error — a fail-OPEN), resolve the behaviour through +# SW_SAFETY_JQ_MISSING_MODE (UX-11): +# on -> fail CLOSED (exit 2) with an explicit message +# metric-only -> (default) log the would-be fail-closed and ALLOW (exit 0) +# off -> silently allow (exit 0) +# A typo collapses to metric-only (the observe-only default). Default is +# metric-only so this hardening does not change the shipped fail-open behaviour +# until an operator opts in with `=on` (post-dogfood promote). +if ! command -v jq >/dev/null 2>&1; then + case "${SW_SAFETY_JQ_MISSING_MODE:-metric-only}" in + on) + echo "[SAFETY-JQ-MISSING] pre-edit-safety: jq not found on PATH — failing closed (exit 2). Install jq (e.g. 'brew install jq') to run this guard." >&2 + exit 2 ;; + off) + exit 0 ;; + metric-only|*) + echo "[SAFETY-JQ-MISSING] metric-only: pre-edit-safety would fail closed (exit 2) — jq not found on PATH; allowing this call. Install jq, or set SW_SAFETY_JQ_MISSING_MODE=on to enforce." >&2 + exit 0 ;; + esac +fi + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" INPUT=$(cat) FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty') -# Sensitive file patterns (aligned with pre-bash-safety.sh) -SENSITIVE='(\.(env|key|pem|p12|pfx|jks|keystore)\b|credentials\b|secret\b|id_rsa\b|id_ed25519\b|id_ecdsa\b|\.npmrc$|\.pypirc$)' +# Sensitive file patterns (aligned with pre-bash-safety.sh). F-HOOKS-03: the +# `credentials`/`secret` arms are anchored to secret-bearing EXTENSIONS so +# legitimate source/doc files (credentials.ts, secret.md) are NOT false-blocked, +# while secret-bearing config (credentials.json, app-secret.yaml) and key +# material (.env, *.key, id_rsa) still are. id_rsa* is basename-anchored so +# `id_rsa_test.pub` stays allowed. +SENSITIVE='(\.(env|key|pem|p12|pfx|jks|keystore)\b|\.npmrc$|\.pypirc$|(^|/)(id_rsa|id_ed25519|id_ecdsa)\b|(credentials|secret)[A-Za-z0-9._-]*\.(json|ya?ml|env|ini|cfg|conf|xml|properties|toml)\b)' if echo "$FILE_PATH" | grep -qiE "$SENSITIVE"; then echo "Blocked: editing sensitive file not allowed: $FILE_PATH" >&2 @@ -47,9 +76,21 @@ case "$FILE_PATH" in source "$SCRIPT_DIR/lib/state-authority.sh" OLD_STRING=$(printf '%s' "$INPUT" | jq -r '.tool_input.old_string // empty' 2>/dev/null || true) NEW_STRING=$(printf '%s' "$INPUT" | jq -r '.tool_input.new_string // empty' 2>/dev/null || true) - if state_field_change_blocked "$FILE_PATH" "$OLD_STRING" "$NEW_STRING"; then - jq -nc '{decision:"block", reason:"hook_owned_field_violation"}' - exit 0 + # state_field_change_blocked echoes the violated registry key on stdout + # and returns 0 when a hook-owned field would change. The DENY is gated by + # SW_STATE_FIELD_GUARD_MODE (proposal 4 / ST-03): `on` blocks, `metric-only` + # (default) logs + allows, `off` allows silently. Default is metric-only so + # populating HOOK_OWNED_FIELDS does not change the shipped allow behaviour. + if _SFG_FIELD=$(state_field_change_blocked "$FILE_PATH" "$OLD_STRING" "$NEW_STRING"); then + case "${SW_STATE_FIELD_GUARD_MODE:-metric-only}" in + on) + jq -nc --arg f "$_SFG_FIELD" \ + '{decision:"block", reason:("hook_owned_field_violation: " + $f + " is a hook-owned, append-only field written exclusively by the autopilot Stop / PreCompact / checkpoint hooks. Do not Edit it directly — let the hooks append. See docs/state-schema.md.")}' + exit 0 ;; + off) ;; + metric-only|*) + echo "[STATE-FIELD-GUARD] metric-only: would block hook_owned_field_violation: ${_SFG_FIELD} (Edit to $FILE_PATH); set SW_STATE_FIELD_GUARD_MODE=on to enforce. See docs/state-schema.md." >&2 ;; + esac fi ;; esac diff --git a/hooks/pre-write-safety.sh b/hooks/pre-write-safety.sh index df8eebf..cc46668 100755 --- a/hooks/pre-write-safety.sh +++ b/hooks/pre-write-safety.sh @@ -1,11 +1,40 @@ #!/usr/bin/env bash set -euo pipefail + +# jq is a documented hard dependency. When it is missing this guard cannot parse +# the tool payload; rather than dying with a silent `exit 127` (which Claude Code +# treats as a non-blocking error — a fail-OPEN), resolve the behaviour through +# SW_SAFETY_JQ_MISSING_MODE (UX-11): +# on -> fail CLOSED (exit 2) with an explicit message +# metric-only -> (default) log the would-be fail-closed and ALLOW (exit 0) +# off -> silently allow (exit 0) +# A typo collapses to metric-only (the observe-only default). Default is +# metric-only so this hardening does not change the shipped fail-open behaviour +# until an operator opts in with `=on` (post-dogfood promote). +if ! command -v jq >/dev/null 2>&1; then + case "${SW_SAFETY_JQ_MISSING_MODE:-metric-only}" in + on) + echo "[SAFETY-JQ-MISSING] pre-write-safety: jq not found on PATH — failing closed (exit 2). Install jq (e.g. 'brew install jq') to run this guard." >&2 + exit 2 ;; + off) + exit 0 ;; + metric-only|*) + echo "[SAFETY-JQ-MISSING] metric-only: pre-write-safety would fail closed (exit 2) — jq not found on PATH; allowing this call. Install jq, or set SW_SAFETY_JQ_MISSING_MODE=on to enforce." >&2 + exit 0 ;; + esac +fi + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" INPUT=$(cat) FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty') -# Sensitive file patterns (aligned with pre-bash-safety.sh) -SENSITIVE='(\.(env|key|pem|p12|pfx|jks|keystore)\b|credentials\b|secret\b|id_rsa\b|id_ed25519\b|id_ecdsa\b|\.npmrc$|\.pypirc$)' +# Sensitive file patterns (aligned with pre-bash-safety.sh). F-HOOKS-03: the +# `credentials`/`secret` arms are anchored to secret-bearing EXTENSIONS so +# legitimate source/doc files (credentials.ts, secret.md) are NOT false-blocked, +# while secret-bearing config (credentials.json, app-secret.yaml) and key +# material (.env, *.key, id_rsa) still are. id_rsa* is basename-anchored so +# `id_rsa_test.pub` stays allowed. +SENSITIVE='(\.(env|key|pem|p12|pfx|jks|keystore)\b|\.npmrc$|\.pypirc$|(^|/)(id_rsa|id_ed25519|id_ecdsa)\b|(credentials|secret)[A-Za-z0-9._-]*\.(json|ya?ml|env|ini|cfg|conf|xml|properties|toml)\b)' if echo "$FILE_PATH" | grep -qiE "$SENSITIVE"; then echo "Blocked: writing to sensitive file not allowed: $FILE_PATH" >&2 @@ -50,9 +79,21 @@ case "$FILE_PATH" in if [ -f "$FILE_PATH" ]; then OLD_STRING=$(cat "$FILE_PATH" 2>/dev/null || true) fi - if state_field_change_blocked "$FILE_PATH" "$OLD_STRING" "$NEW_STRING"; then - jq -nc '{decision:"block", reason:"hook_owned_field_violation"}' - exit 0 + # state_field_change_blocked echoes the violated registry key on stdout + # and returns 0 when a hook-owned field would change. The DENY is gated by + # SW_STATE_FIELD_GUARD_MODE (proposal 4 / ST-03): `on` blocks, `metric-only` + # (default) logs + allows, `off` allows silently. Default is metric-only so + # populating HOOK_OWNED_FIELDS does not change the shipped allow behaviour. + if _SFG_FIELD=$(state_field_change_blocked "$FILE_PATH" "$OLD_STRING" "$NEW_STRING"); then + case "${SW_STATE_FIELD_GUARD_MODE:-metric-only}" in + on) + jq -nc --arg f "$_SFG_FIELD" \ + '{decision:"block", reason:("hook_owned_field_violation: " + $f + " is a hook-owned, append-only field written exclusively by the autopilot Stop / PreCompact / checkpoint hooks. Do not Write it directly — let the hooks append. See docs/state-schema.md.")}' + exit 0 ;; + off) ;; + metric-only|*) + echo "[STATE-FIELD-GUARD] metric-only: would block hook_owned_field_violation: ${_SFG_FIELD} (Write to $FILE_PATH); set SW_STATE_FIELD_GUARD_MODE=on to enforce. See docs/state-schema.md." >&2 ;; + esac fi ;; esac diff --git a/skills/autopilot/references/state-file.md b/skills/autopilot/references/state-file.md index 32372e9..4f8f0a7 100644 --- a/skills/autopilot/references/state-file.md +++ b/skills/autopilot/references/state-file.md @@ -24,7 +24,10 @@ tickets: - logical_id: {parent-slug}-part-{N} # one entry per split-plan ticket, in topological order ticket_dir: {ticket-dir from split-plan} status: pending - steps: {scout: pending, impl: pending, ship: pending} + steps: # canonical FLAT/block form — `steps.` is a STRING on its own line + scout: pending + impl: pending + ship: pending invocation_method: {scout: unknown, impl: unknown, ship: unknown} runtime_metrics: [] # append-only, written by Stop / PreCompact hooks # Sample entry (one full session_end snapshot, all 7 canonical keys): @@ -196,12 +199,17 @@ half-finished run that was moved by mistake. ## `runtime_metrics:` schema `runtime_metrics:` is an **append-only** list written exclusively by the -Stop hook (`hooks/autopilot-continue.sh`) and the PreCompact hook -(`hooks/pre-compact-save.sh`). The list survives ticket completion -(Split State File Cleanup keeps it intact when moving the state file to -`briefs/done/`). Skills MUST NOT write `runtime_metrics:` directly — -hook-only ownership keeps the schema observable from a single audit -point. +following six hooks (the canonical writer set is the `Sourced by:` header of +`hooks/lib/runtime-metrics.sh`, kept in sync by a contract test): +`hooks/autopilot-continue.sh` (session_end), `hooks/pre-compact-save.sh` +(session_compaction), `hooks/impl-checkpoint-guard.sh` (session_end), +`hooks/scout-checkpoint-guard.sh` (session_end), +`hooks/pre-next-scout-auto-compact.sh` (auto_compact_inject), and +`hooks/post-ship-state-auto-compact.sh` (auto_compact_inject). The list +survives ticket completion (Split State File Cleanup keeps it intact when +moving the state file to `briefs/done/`). Skills MUST NOT write +`runtime_metrics:` directly — hook-only ownership keeps the schema observable +from a single audit point. Value domains for `boundary` and `stop_reason`, plus the Stop hook's discrimination heuristic, are defined in diff --git a/skills/brief/SKILL.md b/skills/brief/SKILL.md index 677bfaa..d1ceb84 100644 --- a/skills/brief/SKILL.md +++ b/skills/brief/SKILL.md @@ -54,7 +54,7 @@ User input: $ARGUMENTS Parse `$ARGUMENTS`: - **Preferred new key — `chain=`**: extract `chain=` if present. **Value normalization**: trim whitespace and lowercase the value (`chain=ON`, `chain=Off`, `chain= on ` normalize to `on`/`off`). Token `chain=` is matched case-insensitively. Accepted: `on` (default if neither `chain=` nor `mode=` is supplied), `off`. Any other value → stop and emit `ERROR: invalid chain=. Use chain=on or chain=off` (substituting the offending value); do NOT create the brief directory, do NOT write `brief.md`, do NOT write `autopilot-policy.yaml`, and do NOT write `auto-kick.yaml`; exit non-zero. Mapping for downstream / legacy reasoning: `chain=on` ≡ `mode=auto`, `chain=off` ≡ `mode=manual`. -- **Deprecated alias — `mode=`**: extract `mode=` if present. **Value normalization**: trim whitespace and lowercase the value (`mode=AUTO`, `mode=Manual`, `mode= auto ` normalize to `auto`/`manual`). Token `mode=` is matched case-insensitively. Accepted: `auto` (treated as `chain=on`), `manual` (treated as `chain=off`). Any other value → stop and emit the invalid-mode error (see ## Error Handling for exact message + side-effect contract). **When `mode=` is supplied, also emit to stderr the single line `WARNING: 'mode=' is deprecated and will be removed in vX.(Y+1).0. Use 'chain=on' instead of 'mode=auto', 'chain=off' instead of 'mode=manual'.`** (verbatim literal, including the leading `WARNING:` and the surrounding single quotes). The warning is informational; processing continues with the `mode=` value mapped to the equivalent `chain=` value. +- **Deprecated alias — `mode=`**: extract `mode=` if present. **Value normalization**: trim whitespace and lowercase the value (`mode=AUTO`, `mode=Manual`, `mode= auto ` normalize to `auto`/`manual`). Token `mode=` is matched case-insensitively. Accepted: `auto` (treated as `chain=on`), `manual` (treated as `chain=off`). Any other value → stop and emit the invalid-mode error (see ## Error Handling for exact message + side-effect contract). **When `mode=` is supplied, also emit to stderr the single line `WARNING: 'mode=' is deprecated and will be removed in v9.0.0. Use 'chain=on' instead of 'mode=auto', 'chain=off' instead of 'mode=manual'.`** (verbatim literal, including the leading `WARNING:` and the surrounding single quotes). The warning is informational; processing continues with the `mode=` value mapped to the equivalent `chain=` value. - **Simultaneous specification — `chain=` and `mode=` both present**: stop and emit `ERROR: 'chain=' and 'mode=' cannot be combined. Use 'chain=' (preferred).` Do NOT silent-rewrite; do NOT pick one and ignore the other. Do NOT create the brief directory, do NOT write `brief.md`, do NOT write `autopilot-policy.yaml`, and do NOT write `auto-kick.yaml`. Exit non-zero. (This mirrors the v6.0.0 `auto=true` defensive stance — no silent rewrites of ambiguous argument intent.) - **Default when both keys are omitted**: `chain=on` (equivalent to legacy `mode=auto`). The default preserves the prior `mode=auto`-default behavior so existing user-typed `/brief ""` invocations continue to chain into `/create-ticket` and `/autopilot`. - **`auto=true` removal (v6.0.0)**: if `auto=true` (case-insensitive) appears in `$ARGUMENTS`, stop and emit the v6.0.0 removal error (see ## Error Handling). The removal is intentional and `auto=true` is NOT silently rewritten. @@ -78,7 +78,7 @@ Parse `$ARGUMENTS`: Conduct an iterative Q&A to gather comprehensive requirements. -**mode independence guard (load-bearing — preserved during the `chain=` / `mode=` deprecation period; defensive prose now covers BOTH the new `chain` argument AND the legacy `mode` alias)**: Phase 2 Structured Interview (Socratic) **MUST** run regardless of the parsed `mode` value (`auto` or `manual`, including when `mode=` is omitted and defaults to `auto`). The same independence rule applies to the new canonical `chain` argument introduced in vX.Y.0 — Phase 2 MUST run regardless of the parsed `chain` value (`on` or `off`, including when `chain=` is omitted and defaults to `on` ≡ legacy `mode=auto`). The `mode` argument **MUST NOT** be interpreted as a signal to skip, shorten, or bypass Phase 2 — it has **no effect whatsoever** on Phase 2's execution. The same MUST-NOT applies to the new `chain` argument: it is independence-protected from Phase 2 alongside `mode`, and has no effect whatsoever on Phase 2's execution. Any non-interactive wording elsewhere in this skill (e.g. the Finalization Phase Step 2 chain-confirmation context gated on `mode=auto` ≡ `chain=on`) is scoped to that specific step and **MUST NOT** be generalized to Phase 2. The **ONLY** condition under which Phase 2 is skipped is the existing **"Non-interactive environment fallback"** below (triggered strictly by `AskUserQuestion` itself being unavailable or returning an error, e.g. `claude -p` / CI automation without a TTY) — **not** by the value of `mode` or `chain`. This guard is scheduled for removal in vX.(Y+1).0 alongside the `mode=` alias: `chain={on,off}` does not lexically suggest interview-policy, so the defensive prose becomes unnecessary once the alias is gone and Phase 2 independence can be left implicit. +**mode independence guard (load-bearing — preserved during the `chain=` / `mode=` deprecation period; defensive prose now covers BOTH the new `chain` argument AND the legacy `mode` alias)**: Phase 2 Structured Interview (Socratic) **MUST** run regardless of the parsed `mode` value (`auto` or `manual`, including when `mode=` is omitted and defaults to `auto`). The same independence rule applies to the new canonical `chain` argument introduced in vX.Y.0 — Phase 2 MUST run regardless of the parsed `chain` value (`on` or `off`, including when `chain=` is omitted and defaults to `on` ≡ legacy `mode=auto`). The `mode` argument **MUST NOT** be interpreted as a signal to skip, shorten, or bypass Phase 2 — it has **no effect whatsoever** on Phase 2's execution. The same MUST-NOT applies to the new `chain` argument: it is independence-protected from Phase 2 alongside `mode`, and has no effect whatsoever on Phase 2's execution. Any non-interactive wording elsewhere in this skill (e.g. the Finalization Phase Step 2 chain-confirmation context gated on `mode=auto` ≡ `chain=on`) is scoped to that specific step and **MUST NOT** be generalized to Phase 2. The **ONLY** condition under which Phase 2 is skipped is the existing **"Non-interactive environment fallback"** below (triggered strictly by `AskUserQuestion` itself being unavailable or returning an error, e.g. `claude -p` / CI automation without a TTY) — **not** by the value of `mode` or `chain`. This guard is scheduled for removal in v9.0.0 alongside the `mode=` alias: `chain={on,off}` does not lexically suggest interview-policy, so the defensive prose becomes unnecessary once the alias is gone and Phase 2 independence can be left implicit. **Caps (load-bearing for contract)**: - At most **3 questions per round** (single `AskUserQuestion` call holds up to 3 items). @@ -152,7 +152,7 @@ interview_complete: {true|false} ``` - `chain` (canonical, vX.Y.0+) is the literal scalar (`on` or `off`) derived from the parsed argument in the Argument Parsing step (`chain=on|off` if supplied; otherwise mapped from the deprecated `mode=auto|manual` alias as `auto → on`, `manual → off`; otherwise the default `on`). Sample frontmatter MUST include this `chain: (on|off)` line. -- `mode` (legacy, retained for one minor during the deprecation period — slated for removal in vX.(Y+1).0) is the literal scalar (`auto` or `manual`) parsed from `$ARGUMENTS` in the Argument Parsing step (defaulting to `auto` when both `chain=` and `mode=` are omitted; equivalent to the derived `chain` value via `on ↔ auto` / `off ↔ manual`). During this deprecation window both keys are written to every new brief so legacy `/create-ticket` consumers that have not yet adopted the `chain:` reader keep working unchanged. It is REQUIRED in v6.0.0+ (carried forward as `mode: {auto|manual}` per the deprecation alias contract). Super-legacy briefs written before v6.0.0 may lack this key entirely; downstream readers (notably `/create-ticket brief=`) follow the precedence rule **`chain:` precedes `mode:`** — `chain:` is read first if present, otherwise `mode:` is read for backward compatibility, otherwise the reader defaults to `chain=on` (≡ `mode: auto`). +- `mode` (legacy, retained through the deprecation period — slated for removal in v9.0.0, the next major) is the literal scalar (`auto` or `manual`) parsed from `$ARGUMENTS` in the Argument Parsing step (defaulting to `auto` when both `chain=` and `mode=` are omitted; equivalent to the derived `chain` value via `on ↔ auto` / `off ↔ manual`). During this deprecation window both keys are written to every new brief so legacy `/create-ticket` consumers that have not yet adopted the `chain:` reader keep working unchanged. It is REQUIRED in v6.0.0+ (carried forward as `mode: {auto|manual}` per the deprecation alias contract). Super-legacy briefs written before v6.0.0 may lack this key entirely; downstream readers (notably `/create-ticket brief=`) follow the precedence rule **`chain:` precedes `mode:`** — `chain:` is read first if present, otherwise `mode:` is read for backward compatibility, otherwise the reader defaults to `chain=on` (≡ `mode: auto`). - `interview_complete` is the literal scalar recorded at the end of Phase 2 (`true` if at least one round ran to a user response; `false` if Phase 2 was skipped via the non-interactive fallback or no round produced a response). - **Do NOT emit `split:`** (obsolete — decomposition is `/create-ticket`'s job). - **Do NOT emit `ticket_count:`** (obsolete — decomposition is `/create-ticket`'s job). @@ -163,7 +163,7 @@ interview_complete: {true|false} 1. Read `.simple-workflow/kb/index.yaml`, filter the `autopilot` section (historical decision patterns produced by `/tune` analysis), and apply confidence-based 3-tier judgment per gate (`>= 0.7` → annotate with `# kb-suggested`; `0.5-0.7` → `# [low confidence]`; `< 0.5` → conservative default). Apply size-scoped pattern priority before falling back to `scope=general`. Full integration logic: see [kb-policy-integration](references/kb-policy-integration.md). 2. Determine default policy values based on the user's risk tolerance answers from Phase 2 (maps to conservative/moderate/aggressive). If Phase 2 was skipped (`interview_complete: false`), default to **conservative** and emit default gates. -3. Write to `.simple-workflow/backlog/briefs/active/{slug}/autopilot-policy.yaml` regardless of Phase 2 outcome **and regardless of the parsed `chain` value** (or the legacy `mode` value, while the alias is accepted; the top-level `gates:` line MUST be present). Even in `chain=off` (legacy `mode=manual`), the brief-level `autopilot-policy.yaml` is written as a **rescue path**: per-ticket propagation is suppressed by `/create-ticket` (so manual-mode tickets work like bare-mode tickets via `/impl`'s FIFO selector), but the brief-level policy file remains so a user can later opt into autopilot by running `/autopilot {slug}` directly — the autopilot's brief-level policy fallback (see `skills/autopilot/SKILL.md` Phase 1 step 2, "Brief optionality") consumes this file. +3. Write to `.simple-workflow/backlog/briefs/active/{slug}/autopilot-policy.yaml` regardless of Phase 2 outcome **and regardless of the parsed `chain` value** (or the legacy `mode` value, while the alias is accepted; the top-level `gates:` line MUST be present). Even in `chain=off` (legacy `mode=manual`), the brief-level `autopilot-policy.yaml` is written as a **rescue path**: per-ticket propagation is suppressed by `/create-ticket` (so manual-mode tickets work like bare-mode tickets via `/impl`'s FIFO selector), but the brief-level policy file remains so a user can later opt into autopilot by **first re-running `/create-ticket` with the brief set to `chain: on`** (which propagates `autopilot-policy.yaml` to each ticket dir) and then running `/autopilot {slug}`, exactly as Step 3 instructs. Running `/autopilot {slug}` directly on a manual (`chain: off`) brief stops with a re-propagation directive — the autopilot brief-level policy fallback was retired (`skills/autopilot/SKILL.md` Phase 1). The emitted YAML follows the template in [policy-template](references/policy-template.md) (version 1 / risk_tolerance / gates / constraints, with conservative/moderate/aggressive branches inlined as comments). @@ -208,7 +208,7 @@ f. Otherwise (`/create-ticket` succeeded), proceed to the final invocation: ### Step 3 — `chain=off` (≡ legacy `mode=manual`; no chained handoff) -> Legacy-alias heading kept inline for one-minor backward search compatibility: this section is also reachable as **Step 3 — `mode=manual`** while the `mode=` alias remains accepted (slated for removal in vX.(Y+1).0 alongside the alias). +> Legacy-alias heading kept inline for backward search compatibility: this section is also reachable as **Step 3 — `mode=manual`** while the `mode=` alias remains accepted (slated for removal in v9.0.0 alongside the alias). @@ -259,7 +259,7 @@ In all three shapes (`chain=on` success ≡ legacy `mode=auto` success, `chain=o - **`auto=true` argument (v6.0.0 removal)**: Print `ERROR: 'auto=true' has been removed in v6.0.0; use 'mode=auto' or 'mode=manual'` (legacy literal preserved verbatim; the equivalent vX.Y.0+ form is `chain=on` or `chain=off`) and stop. Do NOT create the brief directory, do NOT write `brief.md`, do NOT write `autopilot-policy.yaml`, and do NOT write `auto-kick.yaml`. Exit non-zero. - **Invalid `chain=` (vX.Y.0+ canonical form)**: Print `ERROR: invalid chain=. Use chain=on or chain=off` (substituting the offending value) and stop. Do NOT create the brief directory, do NOT write `brief.md`, do NOT write `autopilot-policy.yaml`, and do NOT write `auto-kick.yaml`. Exit non-zero. - **Invalid `mode=` (legacy alias path)**: Print `ERROR: invalid mode=. Use mode=auto or mode=manual` (substituting the offending value) and stop. Do NOT create the brief directory, do NOT write `brief.md`, do NOT write `autopilot-policy.yaml`, and do NOT write `auto-kick.yaml`. Exit non-zero. (The deprecation warning for `mode=` itself is emitted only when the alias is *valid*; invalid `mode=` values short-circuit to this error without the warning.) -- **Deprecated `mode=` alias supplied (warning, not an error)**: When `mode=` is parsed with a valid value (`auto` or `manual`) and `chain=` is NOT also supplied, emit to stderr the single line `WARNING: 'mode=' is deprecated and will be removed in vX.(Y+1).0. Use 'chain=on' instead of 'mode=auto', 'chain=off' instead of 'mode=manual'.` (verbatim literal). Processing continues — the alias is mapped to the equivalent `chain=` value and the brief is written normally. +- **Deprecated `mode=` alias supplied (warning, not an error)**: When `mode=` is parsed with a valid value (`auto` or `manual`) and `chain=` is NOT also supplied, emit to stderr the single line `WARNING: 'mode=' is deprecated and will be removed in v9.0.0. Use 'chain=on' instead of 'mode=auto', 'chain=off' instead of 'mode=manual'.` (verbatim literal). Processing continues — the alias is mapped to the equivalent `chain=` value and the brief is written normally. - **Simultaneous `chain=` and `mode=` specification (ERROR, exit non-zero)**: Print `ERROR: 'chain=' and 'mode=' cannot be combined. Use 'chain=' (preferred).` and stop. Do NOT silent-rewrite to either key. Do NOT create the brief directory, do NOT write `brief.md`, do NOT write `autopilot-policy.yaml`, and do NOT write `auto-kick.yaml`. Exit non-zero. - **Researcher failure**: Report error. Continue to Phase 2 without investigation summary. - **AskUserQuestion failure in Phase 2**: Skip Phase 2, proceed with researcher findings only; set `interview_complete: false`. diff --git a/skills/create-ticket/SKILL.md b/skills/create-ticket/SKILL.md index 27357df..0d89aa8 100644 --- a/skills/create-ticket/SKILL.md +++ b/skills/create-ticket/SKILL.md @@ -91,7 +91,7 @@ Per-mode deltas: `MUST invoke the simple-workflow:decomposer via the Agent tool` with an inline `scope_context` spawn prompt per [references/spec-decomposer-input.md](references/spec-decomposer-input.md) Form B. Body: `Input form: scope_context`; `Parent slug: {parent-slug}` (kebab-case of description); `## Context` = description verbatim; `## Investigation Summary` = Phase 1 transient `investigation.md`; `## Socratic Answers` (if any) = one bullet per answer. -Receive `## Result` (Status / Parent slug / Tickets (each ticket also carrying a `peer_set: true|false` Gate 10 hint, and a `shared_conventions:` line when `peer_set` is true) / Topological order / Rationale). Failures: `Status: failed` → `ERROR: decomposer failed — `; unavailable → `ERROR: decomposer agent unavailable`; empty Tickets → `ERROR: decomposer returned zero tickets`; cycle → `ERROR: circular dependency detected among tickets: `. All exit non-zero, atomic. +Receive `## Result` (Status / Parent slug / Tickets (each ticket also carrying a `peer_set: true|false` Gate 10 hint, and a `shared_conventions:` line when `peer_set` is true) / Topological order / Rationale / a mandatory-present cross-ticket `shared_input_boundary:` signal naming each external input class consumed by `>=2` tickets and the sibling ticket ids, or `none`). Forward each sibling ticket's `shared_input_boundary` membership (the shared input class + the sibling ticket ids) into BOTH that ticket's planner spawn AND that ticket's ticket-evaluator spawn (the Gate 7 sibling-guard / Gate 9 upstream input-axis signal), alongside its per-ticket `peer_set:` / `shared_conventions:` hint, so the grader can see the membership the decomposer observed across ticket boundaries. Failures: `Status: failed` → `ERROR: decomposer failed — `; unavailable → `ERROR: decomposer agent unavailable`; empty Tickets → `ERROR: decomposer returned zero tickets`; cycle → `ERROR: circular dependency detected among tickets: `. All exit non-zero, atomic. ### Step B-5: Synthesize `scope_context` and invoke `decomposer` (Brief Mode) diff --git a/skills/create-ticket/references/ac-quality-criteria.md b/skills/create-ticket/references/ac-quality-criteria.md index 13197e1..8b26145 100644 --- a/skills/create-ticket/references/ac-quality-criteria.md +++ b/skills/create-ticket/references/ac-quality-criteria.md @@ -186,7 +186,7 @@ A probe entry that appears in none of the three buckets is a Gate 6.5 FAIL — t **Scope**: per-AC, with a ticket-wide kill switch (see below). -**Motivation**: a test whose expected value is produced by the code under test — or by re-applying the implementation's own rounding / formatting — is self-confirming: it passes whenever the code is internally consistent, even when the code is wrong. This is the defect class that shipped a WCAG contrast solver accepting on a 2-decimal **rounded** ratio (falsely reporting a target as met) past a green 93-test suite, because every test re-measured with the same rounded value the code produced. Gate 7 makes that circularity an authoring-time FAIL. +**Motivation**: a test whose expected value is re-derived from the implementation's own rounded / formatted output is self-confirming — it passes whenever the code is internally consistent, even when wrong. This is the defect class where a test re-thresholds the same rounded value the code produced (falsely reporting a numeric target as met) past a fully green test suite, because every test re-measured with that rounded value. Gate 7 makes that circularity an authoring-time FAIL. **Definition**: an AC is **computational** when its PASS/FAIL hinges on a COMPUTED numeric or algorithmic value — a value the implementation calculates rather than a structural fact. Non-exhaustive cues: a contrast / luminance / color-space ratio, a rounding or precision threshold, a hash / checksum / collision rate, a financial or unit conversion, a parser / serializer round-trip, a distance / similarity / statistical metric, any "within X of Y" or "≥ / ≤ a numeric target" outcome. An AC that is purely structural (file-grep / counter / exit-code verifiable) is **not** computational and is graded `n/a` for Gate 7. @@ -200,11 +200,11 @@ A probe entry that appears in none of the three buckets is a Gate 6.5 FAIL — t **Binding rule** (per computational AC): each computational AC MUST either (a) name an independent oracle + a raw-value tolerance, OR (b) declare the no-oracle fallback above, OR (c) be rewritten as a static AC. A computational AC with none of these is a Gate 7 FAIL. -**Adversarial-input requirement** (every **external-input boundary (computational or behavioral)** — broadened in M3, v8.4.0+): additionally, when an AC's value OR observable behaviour comes from a function that takes external / untrusted input — whether the AC is computational (a computed value) OR behavioral (an observable runtime outcome: a returned value, status code, thrown error, wire payload) — the AC MUST require adversarial / non-finite / out-of-range coverage (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range / out-of-gamut) — independently of the oracle vs no-oracle path. (The oracle + raw-value + tolerance requirements above stay computational-only; only this hostile-input coverage requirement broadens to behavioral external-input ACs, because a DoS hang or a contract-violating error path is reachable on bad input regardless of whether the output is a computed number.) This is what catches DoS hangs and contract-violating outputs on *bad* input, not merely wrong values on *good* input (the motivating dogfood build also shipped a non-finite-input DoS hang and an out-of-range channel leak, both invisible to fixed in-gamut fixtures). A computational OR behavioral AC on an externally-fed function with zero adversarial coverage is a Gate 7 FAIL. The adversarial coverage MUST include at least one **parse-accepted-then-overflows** vector — a value that passes syntactic parsing but yields a non-finite / out-of-range intermediate (e.g. `oklch(0.5 1e400 30)` → Infinity chroma) — NOT only parse-rejected `NaN` / `Infinity` keyword tokens. The parser rejects the latter cheaply at the door, so they exercise the wrong path; the real DoS / corrupt-success bugs live in the values the parser ACCEPTS. (A v8.2.0 dogfood shipped exactly this: the generated test used `oklch(NaN ..)` / `oklch(Infinity ..)`, rejected in ~0 ms, while `oklch(0.5 1e400 30)` parsed and hung an unbounded clamp loop.) +**Adversarial-input requirement** (every **external-input boundary (computational or behavioral)** — broadened in M3, v8.4.0+): additionally, when an AC's value OR observable behaviour comes from a function that takes external / untrusted input — whether the AC is computational (a computed value) OR behavioral (an observable runtime outcome: a returned value, status code, thrown error, wire payload) — the AC MUST require adversarial / non-finite / out-of-range coverage (`NaN`, `Infinity`, empty, malformed, oversized, out-of-range) — independently of the oracle vs no-oracle path. (The oracle + raw-value + tolerance requirements above stay computational-only; only this hostile-input coverage requirement broadens to behavioral external-input ACs, because a DoS hang or a contract-violating error path is reachable on bad input regardless of whether the output is a computed number.) This is what catches DoS hangs and contract-violating outputs on *bad* input, not merely wrong values on *good* input (the motivating dogfood build also shipped a non-finite-input DoS hang and an out-of-range channel leak, both invisible to fixed valid-only fixtures). A computational OR behavioral AC on an externally-fed function with zero adversarial coverage is a Gate 7 FAIL. The adversarial coverage MUST include at least one **parse-accepted-then-overflows** vector — an input the parser ACCEPTS (satisfies the grammar) that yields a non-finite / out-of-range intermediate deeper in the algorithm (e.g. a syntactically-valid magnitude that overflows after a conversion) — NOT only parse-rejected `NaN` / `Infinity` keyword tokens. The parser rejects the latter cheaply at the door, so they exercise the wrong path; the real DoS / corrupt-success bugs live in the values the parser ACCEPTS. (A real dogfood shipped exactly this: the generated test used parse-rejected `NaN` / `Infinity` keyword tokens, rejected in ~0 ms, while a parse-accepted overflowing magnitude got through and hung an unbounded clamp loop.) -**Shared / sibling-guard requirement** (computational ACs sharing an input boundary): when a computational AC's function shares an input parser / validation boundary with sibling tools (e.g. several MCP tools that each parse the same CSS-color string), the input-validation guard (finiteness, range, gamut) MUST either (a) live in the SHARED boundary so every sibling inherits it, OR (b) be replicated AND adversarially tested in EVERY sibling tool that accepts that input class. A guard wired into one consumer but absent from its analogous siblings is a Gate 7 FAIL — this is the `## Modifications` sibling-artifact rule (`CLAUDE.md`) enforced at the AC level. (Dogfood evidence: a finite-components guard added to the solver but not to the analogous `gamut_map` / `parse_color` tools left a live DoS hang reachable through the unguarded siblings.) +**Shared / sibling-guard requirement** (computational ACs sharing an input boundary): when a computational AC's function shares an input parser / validation boundary with sibling tools (e.g. several tools / endpoints that each parse the same input class), the input-validation guard (finiteness, range) MUST either (a) live in the SHARED boundary so every sibling inherits it, OR (b) be replicated AND adversarially tested in EVERY sibling tool that accepts that input class. A guard wired into one consumer but absent from its analogous siblings is a Gate 7 FAIL — this is the `## Modifications` sibling-artifact rule (`CLAUDE.md`) enforced at the AC level. (Dogfood evidence: a validation guard added to one consumer but absent from its analogous siblings leaves a live failure reachable through the unguarded siblings.) **The sibling set is not confined to one ticket — it spans the whole product across ticket boundaries.** When separate tickets EACH create a unit consuming one common input class (so each ticket creates a single unit and its per-ticket `peer_set` is `false`), those units still form one sibling set that the per-ticket peer signal cannot see; the `decomposer` surfaces it as the cross-ticket `shared_input_boundary` signal forwarded into each sibling's planner and ticket-evaluator spawn (see `agents/decomposer.md`). This is the SAME input-validation-strictness axis Gate 9 R2 already owns, reached across tickets — NOT a new gate and NOT a re-home into Gate 10. **A sibling that DELEGATES to the shared parser is NOT automatically n/a.** A delegating sibling still re-exposes the shared boundary through its own surface (a round-trip / re-serialization / re-validation path that can leak on an input the shared parser accepted), so it MUST carry its own hostile / accept-set row (the Gate 9 R2 strictness-leniency probe, boundary-keyed) OR a one-line JUSTIFIED `n/a` a reviewer can challenge — delegation is NOT an automatic n/a, never a silent skip, and 'delegates to the shared parser' is itself NOT an acceptable n/a reason (the row is owed precisely because delegation re-exposes the boundary; an acceptable n/a names a different reason, e.g. the sibling forwards an opaque handle and never re-serializes the parsed value). (Dogfood evidence: a delegating sibling that merely round-tripped a value the shared parser had accepted still raised an unguarded error on a valid-but-extreme magnitude — the leak the shared parser's guard did not cover.) -**Algorithm-vs-algorithm differential (depth-gated, EC-DIFFERENTIAL)**: when a computational AC's contract admits a **second, independent ALGORITHM** for the same result (e.g. gamut mapping by CSS-MINDE vs chroma-clamping; two independent sorts; two serializers), at the `thorough` / `exhaustive` evidence_floor the verification SHOULD cross-check the implementation against that second algorithm **within an explicit tolerance**, not merely assert the output satisfies a membership / invariant test. A membership check (`inGamut`, "result is sorted") is **necessary-not-sufficient** — a wrong-but-in-range result passes it. Where no second independent algorithm exists for the contract, the membership / property coverage stands and the AC records a one-line Caveat — this is never a force-FAIL. +**Algorithm-vs-algorithm differential (depth-gated, EC-DIFFERENTIAL)**: when a computational AC's contract admits a **second, independent ALGORITHM** for the same result (e.g. two independent sorts; two serializers), at the `thorough` / `exhaustive` evidence_floor the verification SHOULD cross-check the implementation against that second algorithm **within an explicit tolerance**, not merely assert the output satisfies a membership / invariant test. A membership check ("result is sorted", "result is in-range") is **necessary-not-sufficient** — a wrong-but-in-range result passes it. Where no second independent algorithm exists for the contract, the membership / property coverage stands and the AC records a one-line Caveat — this is never a force-FAIL. **Kill switch**: when `{ticket-dir}/autopilot-policy.yaml` sets `constraints.oracle_verification: off`, Gate 7 is graded `n/a` ticket-wide (restores pre-v8.2.0 authoring behaviour). Absent field / absent policy / unknown value → `auto` (Gate 7 active — fail-safe). @@ -237,12 +237,12 @@ A probe entry that appears in none of the three buckets is a Gate 6.5 FAIL — t **Motivation**: Gates 1-8 GRADE the ACs that were written; none of them GENERATE the ACs that should exist. AC derivation is feature-driven — the planner writes ACs for the behaviour the feature adds, so a whole failure class (a full-domain invariant violated only at an extreme, a DoS hang on hostile input, a docstring that lies about behaviour, an advertised example that no longer builds) is silently uncovered because no AC ever named it. Gate 9 makes AC derivation **coverage-driven**: for each external boundary the Scope touches, it ENUMERATES the four failure-class rows that MUST each yield >=1 AC or carry an explicit `n/a` justification. Gate 9 only ENUMERATES which boundaries need an AC; Gate 7 and Gate 8 GRADE that AC once it exists (Gate 9 does not re-grade evidence independence). -**Boundary key**: a **Scope-touched external boundary** is any externally reachable surface the ticket's `### Scope` adds or changes — a public/exported function, a CLI subcommand, an HTTP/RPC endpoint, an exported API symbol, a file-format or wire-format, or a parser. Gate 9 keys ONLY on these AND on `>=2`-peer sets (a family of analogous sibling tools sharing an input class). It does **not** fire on internal helpers, private functions, or single-call-site refactors (routine-ticket flood prevention) — a ticket that touches no external boundary is graded `n/a` for Gate 9 in full. +**Boundary key**: a **Scope-touched external boundary** is any externally reachable surface the ticket's `### Scope` adds or changes — a public/exported function, a CLI subcommand, an HTTP/RPC endpoint, an exported API symbol, a file-format or wire-format, or a parser. Gate 9 keys ONLY on these AND on `>=2`-peer sets (a family of analogous sibling tools sharing an input class) — and that family is not confined to one ticket: when separate tickets EACH create a unit consuming one common external input class, every such unit is a Scope-touched boundary for Gate 9 even when its own ticket creates a single unit (per-ticket `peer_set: false`), and the cross-ticket `shared_input_boundary` signal the `decomposer` forwards (see Gate 7 sibling-guard) names which tickets belong; a member that DELEGATES the input handling to a shared parser created elsewhere is NOT thereby exempt — its R2 hostile / accept-set row is required, or a justified `n/a` a reviewer can challenge (delegation is NOT an automatic n/a, and 'delegates to the shared parser' is not itself an acceptable n/a reason). This is the same per-boundary failure-class axis Gate 9 already owns, reached across ticket boundaries — Gate 10 (cross-unit output uniformity) remains disjoint and untouched. It does **not** fire on internal helpers, private functions, or single-call-site refactors (routine-ticket flood prevention) — a ticket that touches no external boundary is graded `n/a` for Gate 9 in full. **Definition**: for EACH Scope-touched external boundary, the ticket MUST carry the **failure-class coverage matrix** — four rows, each yielding >=1 AC OR a one-line `n/a` justification: -- **R1 FULL-DOMAIN INVARIANT**: a property/invariant AC quantifying over the WHOLE valid input domain, INCLUDING boundaries and extremes — min, max, empty, singleton, max-length, and just-inside-each-boundary. (Not a single happy-path fixture: the invariant must hold across the domain, the extremes included.) **Round-trip losslessness (serialization / persistence / file-format / wire-format boundaries)**: when the boundary serializes, persists, or round-trips a value, the R1 invariant MUST include a `parse(serialize(x)) == x` property (and, where the format IS the persisted state, `load(save(x)) == x`) quantified across the whole value domain, INCLUDING the fidelity-prone extremes: an empty key, an empty value, a value that contains the format's own delimiter / separator / quote / newline, a duplicate or accessor (`__proto__`) key, and non-ASCII / unicode. A format that silently drops, truncates, or mangles a value at one of these extremes (a list rendering that cannot represent an `=`-bearing value, a CSV that loses a `__proto__` header column) FAILS R1 even when it is otherwise spec-faithful — a weaker-but-legal format choice is a coverage gap, not an excuse. Where the boundary genuinely cannot round-trip (a one-way digest / hash), R1 is a justified `n/a` naming why. -- **R2 HOSTILE + BOUNDED TERMINATION + RESOURCE-CAP**: malformed / oversized / empty / out-of-domain input yields a **bounded error in bounded time and space** — no hang, no unbounded allocation, no non-error "success" carrying corrupt output. This reuses the Gate 7 overflow-vector + watchdog requirement (a parse-accepted-then-overflows vector through a time-bounded watchdog), boundary-keyed: every external boundary gets its own hostile-input row, not only the one the motivating feature exercised. Where the boundary builds a structure from untrusted input (an object / map keyed by CSV headers, parsed JSON, or form / query / YAML fields), the hostile-input AC MUST also cover hostile KEYS, not only hostile values — prototype-pollution / accessor keys (`__proto__`, `constructor`, `prototype`), duplicate / colliding keys, and empty / non-string keys — asserting no silent column-drop, no prototype mutation, and no swallowed key (the structurally-correct fix is `Object.create(null)` / `Object.defineProperty` / a `Map`). +- **R1 FULL-DOMAIN INVARIANT**: a property/invariant AC quantifying over the WHOLE valid input domain, INCLUDING boundaries and extremes — min, max, empty, singleton, max-length, and just-inside-each-boundary. (Not a single happy-path fixture: the invariant must hold across the domain, the extremes included.) **Round-trip losslessness (serialization / persistence / file-format / wire-format boundaries)**: when the boundary serializes, persists, or round-trips a value, the R1 invariant MUST include a `parse(serialize(x)) == x` property (and, where the format IS the persisted state, `load(save(x)) == x`) quantified across the whole value domain, INCLUDING the fidelity-prone extremes: an empty key, an empty value, a value that contains the format's own delimiter / separator / quote / newline, a duplicate key and an accessor / reserved key the host structure treats specially, and non-ASCII / unicode. A format that silently drops, truncates, or mangles a value at one of these extremes (a list rendering that cannot represent a value containing the format's own delimiter, a serializer that loses an accessor / reserved key) FAILS R1 even when it is otherwise spec-faithful — a weaker-but-legal format choice is a coverage gap, not an excuse. Where the boundary genuinely cannot round-trip (a one-way digest / hash), R1 is a justified `n/a` naming why. +- **R2 HOSTILE + BOUNDED TERMINATION + RESOURCE-CAP**: malformed / oversized / empty / out-of-domain input yields a **bounded error in bounded time and space** — no hang, no unbounded allocation, no non-error "success" carrying corrupt output. This reuses the Gate 7 overflow-vector + watchdog requirement (a parse-accepted-then-overflows vector through a time-bounded watchdog), boundary-keyed: every external boundary gets its own hostile-input row, not only the one the motivating feature exercised. Where the boundary builds a structure from untrusted input (an object / map keyed by parsed headers, parsed JSON, or form / query / YAML fields), the hostile-input AC MUST also cover hostile KEYS, not only hostile values — prototype-pollution / accessor keys (an accessor / reserved key the host structure treats specially), duplicate / colliding keys, and empty / non-string keys — asserting no silent column-drop, no structure-metadata mutation, and no swallowed key (the structurally-correct fix is a null-prototype / own-properties-only container or a Map-equivalent). Beyond hostile values and keys, the row MUST probe **strictness-leniency** wherever a boundary is advertised **strict / canonical / exact / lowercase-only** OR parses a number through a lenient numeric primitive: feed inputs that satisfy the rules' *letter* yet exceed the *advertised* surface — an out-of-alphabet symbol a permissive matcher accepts (a non-ASCII / Unicode-digit / homoglyph numeral a Unicode-aware matcher or a lenient numeric primitive silently accepts before a unit), a sign / whitespace decoration a lenient primitive strips (a leading sign or surrounding-or-embedded whitespace before the digits), and a structurally-valid-but-non-canonical form the canonical writer would never emit (a leading-zero or an explicit-zero-component form) — and assert the enforced boundary equals the advertised one: each is EITHER rejected with the documented error OR normalized and proven idempotent (`parse(format(parse(x))) == parse(x)` AND `format(parse(x))` is canonical). A parser advertised strict that silently accepts a wider surface than it documents is a **strictness-leniency** gap even when no value is corrupted (dogfood evidence: a real dogfood shipped a 'strict' parser that silently accepted out-of-alphabet numerals and non-canonical forms its own fixtures never exercised, none caught by its valid-only fixtures, its Gate 9 matrix, or the panel). - **R3 DESCRIPTION-MATCHES-BEHAVIOR**: runtime behaviour matches the unit's own description / docstring / declared invariant / type annotation — the code does what its own documentation says it does. Concretely, the row's AC MUST RUN the unit through the real public / protocol boundary and assert the observed behaviour against the unit's OWN declared contract (a docstring that claims "returns a sorted copy" → assert the runtime output is a sorted copy AND a distinct object; a declared range / non-null invariant → assert the runtime value obeys it). This is the **EC-SELFDOC** evidence channel (failure mode A, description-vs-behavior drift — see [`../../impl/references/evidence-channels.md`](../../impl/references/evidence-channels.md)); the verifier-side consumer is the `doc-verifier` agent (and the `ac-evaluator` `## Independent Evidence` duty). A row asserting only that the docstring TEXT exists (a grep) without RUNning the unit against it is EC-STATIC on a behavioral claim and does NOT satisfy R3. - **R4 DOC/INTERFACE TRUTHFULNESS**: each advertised example reproduces on a real build, and each advertised boundary equals the enforced boundary. Concretely: (a) for each doc / README / `--help` / man-page worked-example the ticket adds or relies on, the row's AC MUST RUN that command against the real build and diff stdout / exit code against the documented output — byte-for-byte when the output is deterministic, an explicit tolerance otherwise (and the AC names which); (b) for each advertised constraint / limit / range, the AC MUST feed a FORBIDDEN value (just past the advertised limit — MUST be rejected with the documented error) AND an ALLOWED value (just inside the advertised limit — MUST be accepted) to the real boundary, so the enforced boundary is proven equal to the advertised one. This is the **EC-SELFDOC** channel (failure mode E, advertised-boundary != enforced-boundary); the verifier-side consumer is the `doc-verifier` agent under the `.simple-workflow/scratch/` exec carve-out. **Fail-open**: where the boundary advertises no example and no numeric / range limit, R4 is a justified `n/a` (not a FAIL); where the build genuinely cannot be exercised, the AC / verifier records a one-line Caveat rather than force-FAILing. diff --git a/skills/create-ticket/references/agent-spawn-prompts.md b/skills/create-ticket/references/agent-spawn-prompts.md index 80089c7..b343d90 100644 --- a/skills/create-ticket/references/agent-spawn-prompts.md +++ b/skills/create-ticket/references/agent-spawn-prompts.md @@ -98,7 +98,7 @@ Additional context for the planner: - If brief was provided: full brief content (replaces Phase 2 answers). - If findings mode: decomposer-returned skeleton (title, scope_summary, size, depends_on) plus the findings file content, so the planner can lift affected files and observable outcomes verbatim. - **Available capabilities** (verbatim copy of the orchestrator's Pre-computed Context probes): the `Available user skills:` line AND the `Available MCP servers:` line MUST be inlined into the spawn prompt as-is. **MCP inheritance under v8.0.0.** The productive subagents (`implementer`, `planner`, `researcher`, `test-writer`) omit their `tools:` field and therefore inherit the parent session's full tool inventory — including every MCP server configured in `.mcp.json` (project scope) and `~/.claude.json` (user scope), regardless of server name. The orchestrator MUST still serialise the `Available user skills:` and `Available MCP servers:` probes verbatim into the spawn prompt and bind each runtime / visual AC to a concrete capability in the planner's `### Capabilities` table — relevance remains upstream-authoritative. The subagent treats unbound `mcp__*` tools as off-limits even though they appear in its tool inventory (per the agent body's `## Bound Capabilities (Handoff from Orchestrator)` section). The verdict / read-only agents (`ac-evaluator`, `code-reviewer`, `decomposer`, `security-scanner`, `ticket-evaluator`, `tune-analyzer`) retain explicit `tools:` allowlists and do NOT inherit MCP. Empty probe outputs (`(none)`) are passed through unchanged — the planner needs to know whether the gap is "no capability found" vs "not yet probed". -- The literal instruction: "Each AC will be evaluated by an independent evaluator against the canonical AC Quality Criteria at `skills/create-ticket/references/ac-quality-criteria.md`. The planner MUST follow that file as the sole source of truth for Gates 1-10, including the Gate 4 observation-point carve-out, the Gate 5 size-mismatch rationale rule, the Gate 7 oracle-independence requirement for computational ACs, the Gate 8 independent-evidence requirement for behavioral ACs, the Gate 9 failure-class-coverage requirement for Scope-touched external boundaries, and the Gate 10 peer-set-uniformity requirement (assert >=1 unified-convention AC over any >=2-peer sibling set the Scope creates, or a justified n/a). The decomposer's `peer_set:` / `shared_conventions:` hint for this ticket is forwarded below as the upstream peer-set signal. ACs that fail any gate will be rejected." +- The literal instruction: "Each AC will be evaluated by an independent evaluator against the canonical AC Quality Criteria at `skills/create-ticket/references/ac-quality-criteria.md`. The planner MUST follow that file as the sole source of truth for Gates 1-10, including the Gate 4 observation-point carve-out, the Gate 5 size-mismatch rationale rule, the Gate 7 oracle-independence requirement for computational ACs, the Gate 8 independent-evidence requirement for behavioral ACs, the Gate 9 failure-class-coverage requirement for Scope-touched external boundaries, and the Gate 10 peer-set-uniformity requirement (assert >=1 unified-convention AC over any >=2-peer sibling set the Scope creates, or a justified n/a). The decomposer's `peer_set:` / `shared_conventions:` hint for this ticket is forwarded below as the upstream peer-set signal, AND — when this ticket is a member of a cross-ticket `shared_input_boundary` family (the same external input class is consumed by sibling tickets too) — that membership (the shared input class + the sibling ticket ids) is forwarded as the upstream Gate 7 sibling-guard / Gate 9 input-axis signal: when present, each named sibling (this ticket included) MUST carry its OWN hostile / accept-set failure-class row for that input class even if it delegates the input handling to a shared parser created in another ticket. Delegation is NOT an automatic n/a: the row is required, OR a one-line justified n/a a reviewer can challenge — and 'delegates to the shared parser' is NOT an acceptable n/a rationale (delegation is exactly why the row is owed), so an acceptable n/a must name a DIFFERENT reason (e.g. this sibling never re-serializes or round-trips the parsed value, only forwarding an opaque handle). ACs that fail any gate will be rejected." - The literal instruction: "Emit a `### Capabilities` section in the ticket between `### Implementation Notes` and `### Claude Code Workflow`. Each row carries `Name | Type | Purpose | Used by | Bound AC(s)`." - The literal instruction: "Apply Gate 6 of the canonical AC Quality Criteria — every runtime/visual AC (live rendering, console-error count, keyboard focus/hover, WCAG contrast, network I/O, FS-state-dependent) MUST appear in at least one row's `Bound AC(s)` column OR be rewritten as a static AC. If the available capabilities probe returned `(none)` and an AC is runtime/visual, list the gap under `#### Capability Gaps` and rewrite the AC to be static-verifiable." @@ -152,7 +152,7 @@ d. Max 2 rounds (initial + 1 revision). If still FAIL, run the autopilot-policy ### Autopilot-policy escalation (gates.ticket_quality_fail) -After 2 rounds of FAIL, check `{ticket-dir}/autopilot-policy.yaml` at `.simple-workflow/backlog/product_backlog/{parent-slug}/{ticket-dir}/`. If missing **and** `brief=` was given **AND** `brief_mode == auto` (resolved per the canonical precedence rule **chain: precedes mode:** introduced in vX.Y.0: `chain: on` → `brief_mode == auto`, `chain: off` → `brief_mode == manual`; when `chain:` is absent the legacy `mode:` field is read for backward compatibility; super-legacy briefs lacking both keys are treated as `auto` ≡ `chain=on`. The deprecated `mode=` argument supplied to `/brief` is mirrored into the brief frontmatter's `mode:` field, so this fallback path continues to honour pre-vX.Y.0 briefs unchanged. The `mode:` field will be removed in vX.(Y+1).0; the precedence rule converges on the `chain:` reader at that point.), also check `{brief-parent-dir}/autopilot-policy.yaml` (e.g. `.simple-workflow/backlog/briefs/active/{slug}/`). When `brief_mode == manual` (≡ `chain: off`), the brief-parent `autopilot-policy.yaml` fallback is **skipped** — manual-mode runs do not pull retry-strategy from autopilot policy and proceed directly to the interactive flow below. +After 2 rounds of FAIL, check `{ticket-dir}/autopilot-policy.yaml` at `.simple-workflow/backlog/product_backlog/{parent-slug}/{ticket-dir}/`. If missing **and** `brief=` was given **AND** `brief_mode == auto` (resolved per the canonical precedence rule **chain: precedes mode:** introduced in vX.Y.0: `chain: on` → `brief_mode == auto`, `chain: off` → `brief_mode == manual`; when `chain:` is absent the legacy `mode:` field is read for backward compatibility; super-legacy briefs lacking both keys are treated as `auto` ≡ `chain=on`. The deprecated `mode=` argument supplied to `/brief` is mirrored into the brief frontmatter's `mode:` field, so this fallback path continues to honour pre-vX.Y.0 briefs unchanged. The `mode:` field will be removed in v9.0.0; the precedence rule converges on the `chain:` reader at that point.), also check `{brief-parent-dir}/autopilot-policy.yaml` (e.g. `.simple-workflow/backlog/briefs/active/{slug}/`). When `brief_mode == manual` (≡ `chain: off`), the brief-parent `autopilot-policy.yaml` fallback is **skipped** — manual-mode runs do not pull retry-strategy from autopilot policy and proceed directly to the interactive flow below. - If a policy file is present, read `gates.ticket_quality_fail`: - `retry_with_feedback` + retry count < `max_retries` → continue retrying. Print `[AUTOPILOT-POLICY] gate=ticket_quality_fail action=retry_with_feedback round={n}`. diff --git a/skills/create-ticket/references/autopilot-policy-reference.md b/skills/create-ticket/references/autopilot-policy-reference.md index 361fa4f..cd3b29d 100644 --- a/skills/create-ticket/references/autopilot-policy-reference.md +++ b/skills/create-ticket/references/autopilot-policy-reference.md @@ -5,33 +5,35 @@ This document catalogs the per-ticket knobs that individual skills read from limits, etc.) is documented in `.simple-workflow/docs/plans/` — this page lists only the fields that orchestrator skills consult directly outside the gate machinery. -## `constraints.sonnet_size_threshold` +## Generator model policy -**Consumed by**: `/impl` (Generator model selection, step 13). +simple-workflow does not size-route the generation-side model. The model each +generation-side agent runs on is fixed in its agent-file frontmatter: -**Accepted values**: `S`, `M`, `L`, `off`. - -**Default** (field absent OR policy file absent): `M`. - -**Effect**: - -| Value | Sizes that use sonnet | Sizes that use opus | +| Agent | `model:` | Rationale | |---|---|---| -| `S` | S | M, L, XL, unknown | -| `M` (default) | S, M | L, XL, unknown | -| `L` | S, M, L | XL, unknown | -| `off` | — (none) | all sizes | - -The default `M` preserves the behavior shipped before the knob was -introduced: Size S and M tickets run the Generator on sonnet; L/XL/unknown -escalate to opus. - -Set `constraints.sonnet_size_threshold: off` in a high-risk brief's policy -file to force every ticket under that brief to use opus, regardless of -assigned Size. Set `constraints.sonnet_size_threshold: L` to experiment -with a cheaper Generator on larger tickets — not recommended for -production pipelines; use `M` unless you have measured the failure-rate -trade-off. +| `agents/implementer.md` | `opus` (always) | High-volume work where the retry economy of the stronger model beats size-routing: at the current price ratio (Opus ≈ 1.67× Sonnet per 1M tokens) a single extra evaluation round on a downgraded generator erases the routing saving, so opus is the cost-rational default. | +| `agents/planner.md` | `inherit` | Small-output, high-leverage step — a planning error loses the whole implement + evaluate round. Inheriting the session model lifts the planning ceiling to whatever model the session runs (raising the bar on newest model families). | +| `agents/decomposer.md` | `inherit` | Same shape — a decomposition error is lost per ticket. Inherits the session model. | + +`inherit` resolves to the session model by default. The resolution order is +`CLAUDE_CODE_SUBAGENT_MODEL` env var > a per-invocation override passed by the +caller > the agent frontmatter > the session model. To force the whole +generation + verification fleet onto one model regardless of these per-agent +pins, set `CLAUDE_CODE_SUBAGENT_MODEL` in the environment before launching. + +The evaluation-side model allocation (sonnet by default, opus for +`criticality == critical` or the `exhaustive` tier via the byte-identical +`agents/ac-evaluator-hi.md` sibling) is described in +[`../../impl/references/verification-depth.md`](../../impl/references/verification-depth.md) +`## Criticality scalar` / `## Effects ladder` and is unaffected by this policy. + +> **Migration note** — the per-ticket `constraints` knob that used to +> size-route the Generator model (documented in this section in earlier +> versions) was **removed**; the Generator now always runs on opus per the +> policy above. If an older `autopilot-policy.yaml` still carries that routing +> field, it is now an unknown key with no consumer and is silently ignored — a +> harmless no-op, so no migration action is required. ## `constraints.verification_depth` diff --git a/skills/create-ticket/references/spec-decomposer-input.md b/skills/create-ticket/references/spec-decomposer-input.md index a693596..336d8d7 100644 --- a/skills/create-ticket/references/spec-decomposer-input.md +++ b/skills/create-ticket/references/spec-decomposer-input.md @@ -66,6 +66,8 @@ The caller (`/create-ticket` orchestrator) is responsible for: Both forms produce the same `## Result` block (status / parent slug / tickets / topological order / rationale) bounded by the agent's Context Conservation Protocol (< 500 tokens). Cycle detection, the 8-ticket cap, and the `Status: partial` overflow path apply identically across forms. +The `## Result` block additionally carries two upstream signals for the planner: the per-ticket `peer_set:` / `shared_conventions:` output-uniformity hint (Gate 10), and ONE mandatory-present cross-ticket `shared_input_boundary:` hint (Gate 7 sibling-guard / Gate 9) naming each external input class consumed by `>=2` DIFFERENT tickets together with the sibling ticket ids — emitted even when each consuming ticket creates only a single unit (per-ticket `peer_set: false`) and even when a consuming ticket merely delegates the input handling to a shared parser created in another ticket. Both signals are advisory and emitted unconditionally; see `agents/decomposer.md` for the exact shape. + ## Failure modes - Missing `Input form:` header → return `Status: failed` with rationale `missing input form header`. diff --git a/skills/create-ticket/references/ticket-template.md b/skills/create-ticket/references/ticket-template.md index 0b4f487..5d8bffb 100644 --- a/skills/create-ticket/references/ticket-template.md +++ b/skills/create-ticket/references/ticket-template.md @@ -36,7 +36,7 @@ Generate the ticket in the following format: | Failure class | AC(s) or n/a justification | |------|------| | R1 FULL-DOMAIN INVARIANT (whole valid domain incl. min/max/empty/singleton/max-length/just-inside-each-boundary) | AC-... \| n/a: ... | -| R2 HOSTILE + BOUNDED TERMINATION + RESOURCE-CAP (malformed/oversized/empty/out-of-domain -> bounded error in bounded time/space; no hang, no non-error success) | AC-... \| n/a: ... | +| R2 HOSTILE + BOUNDED TERMINATION + RESOURCE-CAP (malformed/oversized/empty/out-of-domain -> bounded error in bounded time/space; no hang, no non-error success; when this unit is a member of a cross-ticket `shared_input_boundary` family it owes this row even if it DELEGATES to a shared parser — 'delegates to the shared parser' is not an acceptable n/a) | AC-... \| n/a: ... | | R3 DESCRIPTION-MATCHES-BEHAVIOR (runtime matches the unit's own docstring/declared invariant) | AC-... \| n/a: ... | | R4 DOC/INTERFACE TRUTHFULNESS (each advertised example reproduces on a real build; advertised boundary == enforced boundary) | AC-... \| n/a: ... | diff --git a/skills/impl/SKILL.md b/skills/impl/SKILL.md index a22b4e3..4e17371 100644 --- a/skills/impl/SKILL.md +++ b/skills/impl/SKILL.md @@ -110,7 +110,7 @@ Intra-impl state lives under `phases.impl.*` in `{ticket-dir}/phase-state.yaml`. - `Type = MCP` → `` `ToolSearch query="select:" max_results=1`, then invoke `` directly `` (the `` is the full `mcp____` slug, substituted verbatim from the row's `Name` column). The column exists because plugin subagents see `mcp__*` (and some Skills) as **deferred tools** — names visible, schemas unloaded — so direct invocation raises `InputValidationError` until `ToolSearch` fetches the schema. By generating `How to load` from the `Type` column at orchestrator time, user-added MCP servers (mounted via the user's `.mcp.json` or `~/.claude.json`) and user-installed Skills (under `~/.claude/skills/` or `.claude/skills/`) are handled identically to anything shipped by the plugin without any per-skill code change. The implementer's `## Side-effect ban` carries an explicit advisory-invocation exception for entries on this list. When the ticket has no `### Advisory Capabilities` section (older ticket or empty by Gate 6.5 design), emit `## Advisory capabilities (per ticket): (none)` and proceed. The Advisory table is for productive subagents only — do NOT inline it into `ac-evaluator` spawn prompts at Step 15 (Advisory ≠ verification). - - `subagent_type: simple-workflow:implementer`; description "Implement plan for ". Model per `constraints.sonnet_size_threshold` in `{ticket-dir}/autopilot-policy.yaml` (`S`/`M`/`L`/`off`; default `M`; `off` → opus); see `skills/create-ticket/references/autopilot-policy-reference.md`. + - `subagent_type: simple-workflow:implementer`; description "Implement plan for ". The Generator always runs on opus (`agents/implementer.md` frontmatter `model: opus`); see the **Generator model policy** in `skills/create-ticket/references/autopilot-policy-reference.md`. - Prompt fields a-g: plan path (read full), AC list ("You will be evaluated by an independent evaluator"), investigation, user instructions, round 2+ feedback (`eval-round-{n-1}.md` / `quality-round-{n-1}.md`), CLAUDE.md lint/test ref, round-1 Dry-Run plan. h. KB injection: Read `.simple-workflow/kb/index.yaml`; filter `role=implementer` and `confidence >= 0.8`; include up to 20 summary lines under "## Known Project Patterns". If `.simple-workflow/kb/index.yaml` does not exist, skip silently. **AC always wins over KB patterns on conflict.** i. Autopilot: if `autopilot-policy.yaml` has `constraints.allow_breaking_changes: false`, include "CONSTRAINT: Do not introduce breaking changes to existing public APIs, interfaces, or exported functions." diff --git a/skills/impl/lib/detect-tautological-assertions.sh b/skills/impl/lib/detect-tautological-assertions.sh index 76c8d90..d1f9bf3 100755 --- a/skills/impl/lib/detect-tautological-assertions.sh +++ b/skills/impl/lib/detect-tautological-assertions.sh @@ -15,10 +15,16 @@ # one line per finding, in the form # R: : # -# This detector is intentionally grep-based and language/framework-agnostic -# at the regex level. See the rules file's `## Limitations` section for the -# documented out-of-scope cases (variable resolution, type inference, -# cross-file analysis, AST-level algebraic simplification). +# This detector is grep-based and JS/Jest-Vitest-targeted: its regexes match the +# `expect(...).toBe* / toEqual` matcher family and JS numeric literals +# (`Number.MAX_VALUE`, `Infinity`, ...), so it only fires on JavaScript/TypeScript +# tests written for Jest/Vitest. It does NOT detect tautological assertions in +# other languages or test frameworks (pytest, JUnit, Go testing, ...); their +# tautological-assertion / oracle-circularity coverage comes from the +# `ac-evaluator`'s semantic pass (`agents/ac-evaluator.md`), not from this static +# helper. See the rules file's `## Limitations` section for the documented +# out-of-scope cases (variable resolution, type inference, cross-file analysis, +# AST-level algebraic simplification). set -euo pipefail if [ "$#" -lt 1 ]; then diff --git a/skills/impl/references/ac-evaluator-orchestration.md b/skills/impl/references/ac-evaluator-orchestration.md index 135865c..230d78a 100644 --- a/skills/impl/references/ac-evaluator-orchestration.md +++ b/skills/impl/references/ac-evaluator-orchestration.md @@ -110,7 +110,7 @@ on the raw value + a parse-accepted-overflow vector). Substitute `{i}` ∈ - **V1 — runtime / black-box lens (EC-RUNTIME)**: `--- lens: 1/3 runtime/EC-RUNTIME --- Gather evidence through the REAL public / protocol boundary only: drive the actual CLI, the actual MCP Client over a transport, or the exported public API — never internal handlers reached by reflection or imports the real consumer cannot use. A green project suite is necessary but NOT sufficient: confirm the AC's behaviour is observable at the public boundary, and FAIL any AC whose only evidence is a white-box test that bypasses the schema / serialization / transport layer where real consumers fail.` - **V2 — differential / property lens (EC-DIFFERENTIAL or EC-PROPERTY)**: `--- lens: 2/3 differential-or-property/EC-DIFFERENTIAL,EC-PROPERTY --- Establish evidence INDEPENDENT of the implementation's own output. When a reference implementation of the same contract exists, cross-check the implementation against it (EC-DIFFERENTIAL). Otherwise drive a seeded random sweep over the input space (fixed seed → reproducible) and assert the invariants the output must hold — monotonicity, symmetry, idempotence, round-trip, range/gamut containment (EC-PROPERTY). FAIL an AC whose tests assert only a handful of fixed points the code itself could have produced, with no reference cross-check and no property coverage across the distribution. At thorough / exhaustive, where a SECOND independent ALGORITHM for the same contract exists, compare algorithm-vs-algorithm within tolerance (membership / invariant satisfaction is necessary-not-sufficient — a wrong result can still be in-range); and require a committed, fixed-seed property-fuzz loop across the distribution.` -- **V3 — independent-oracle / targeted-fuzz lens (EC-ORACLE + adversarial)**: `--- lens: 3/3 oracle-or-fuzz/EC-ORACLE --- For any computational AC, independently derive at least one expected value from an oracle that does NOT share the implementation's core (a third-party reference library, a published formula applied from first principles, or a cited hand-computed constant) and compare against the implementation's RAW, pre-rounding output with an explicit tolerance — this is the Gate 7 oracle probe, applied with full force. Additionally fuzz at least one parse-accepted-then-overflows vector (a value the parser ACCEPTS that yields a non-finite / out-of-range intermediate, e.g. `oklch(0.5 1e400 30)`) through the tool under a time-bounded watchdog; FAIL if it hangs or returns a non-error success carrying null / NaN fields. A scratch oracle probe under .simple-workflow/scratch/ is permitted. At thorough / exhaustive for a standard-backed computational AC, derive two mutually-validated oracles (>=1 first-principles) and trust a value only when they agree within tolerance, backed by a committed, fixed-seed seeded fuzz; degrade to one oracle + a Caveat where no second oracle / second algorithm exists.` +- **V3 — independent-oracle / targeted-fuzz lens (EC-ORACLE + adversarial)**: `--- lens: 3/3 oracle-or-fuzz/EC-ORACLE --- For any computational AC, independently derive at least one expected value from an oracle that does NOT share the implementation's core (a third-party reference library, a published formula applied from first principles, or a cited hand-computed constant) and compare against the implementation's RAW, pre-rounding output with an explicit tolerance — this is the Gate 7 oracle probe, applied with full force. Additionally fuzz at least one parse-accepted-then-overflows vector (a value the parser ACCEPTS that yields a non-finite / out-of-range intermediate, e.g. a numeric field whose magnitude overflows to Infinity once arithmetic is applied) through the tool under a time-bounded watchdog; FAIL if it hangs or returns a non-error success carrying null / NaN fields. A scratch oracle probe under .simple-workflow/scratch/ is permitted. At thorough / exhaustive for a standard-backed computational AC, derive two mutually-validated oracles (>=1 first-principles) and trust a value only when they agree within tolerance, backed by a committed, fixed-seed seeded fuzz; degrade to one oracle + a Caveat where no second oracle / second algorithm exists.` The lens header mirrors the `--- partition: /2 ---` convention so the agent recognises its role; the `ac-evaluator` body documents the three @@ -212,10 +212,15 @@ grader systematically under-checks): lens rather than only per computational AC. When the unit builds a structure (object / map / record) from untrusted input (keys from CSV headers, parsed JSON, form / query / YAML fields), this lens also probes hostile KEYS, not only - hostile values: prototype-pollution / accessor keys (`__proto__`, - `constructor`, `prototype`), duplicate / colliding keys, empty / non-string - keys — a silently-dropped column, a mutated prototype, or a swallowed key is a - robustness defect. + hostile values: an accessor / reserved key the host structure treats + specially (the prototype-pollution class), duplicate / colliding keys, empty / + non-string keys — a silently-dropped column, a structure-metadata mutation, or + a swallowed key is a robustness defect. It also probes **strictness-leniency** at any boundary + advertised strict / canonical / exact or parsing a value via a lenient + numeric primitive: an out-of-alphabet symbol a permissive matcher accepts; a + sign / whitespace decoration a lenient primitive strips; and a + structurally-valid-but-non-canonical form the canonical writer would never + emit — an enforced surface wider than the advertised strictness is a defect. - **L-CONTRACT-CONFORMANCE** — does each generated unit's observable behaviour match its OWN stated description / declared schema / documented contract (a function that does not do what its name and doc-comment claim; a tool whose diff --git a/skills/impl/references/evidence-channels.md b/skills/impl/references/evidence-channels.md index 8461422..ef77cf6 100644 --- a/skills/impl/references/evidence-channels.md +++ b/skills/impl/references/evidence-channels.md @@ -53,9 +53,9 @@ but is NOT independent evidence for a *behavioral* AC on its own. reference implementation of the same contract. *Independent because* a second implementation would have to share the exact same bug to agree. Strongest as **algorithm-vs-algorithm**: when a second, INDEPENDENT ALGORITHM for the same - contract exists (e.g. CSS-MINDE vs chroma-clamping gamut mapping), cross-check + contract exists (two independent algorithms for the same contract), cross-check the two within an explicit tolerance — a membership / invariant test alone - (`inGamut`, "is sorted") is **necessary-not-sufficient** because a wrong + (a containment check, "is sorted") is **necessary-not-sufficient** because a wrong result can still satisfy it. At `thorough` / `exhaustive` use the second-algorithm differential where one is identifiable; degrade to membership / property coverage + a Caveat where no second algorithm exists. @@ -124,8 +124,8 @@ namespace rule above). - **RT-ABUSE** — misuse of the public contract: out-of-order calls, illegal state transitions, authorization bypass, contract-violating argument combinations. - **RT-MALFORMED** — structurally invalid or adversarial payloads (overlong, mixed - encoding, injection, parse-accepted-then-overflows values such as - `oklch(0.5 1e400 30)`). + encoding, injection, parse-accepted-then-overflows values: an input the parser + ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion). - **RT-EXHAUST** — resource exhaustion: unbounded allocation, pathological recursion, timeouts, rate-limit / quota pressure. - **RT-CONCURRENCY** — races, re-entrancy, shared-state corruption, ordering hazards diff --git a/skills/impl/references/independent-oracle-harness.md b/skills/impl/references/independent-oracle-harness.md index e99920c..5450da7 100644 --- a/skills/impl/references/independent-oracle-harness.md +++ b/skills/impl/references/independent-oracle-harness.md @@ -11,6 +11,14 @@ structure instead of re-deriving it. See [`evidence-channels.md`](evidence-channels.md) (EC-ORACLE / EC-DIFFERENTIAL / EC-PROPERTY) for the obligations this shape satisfies. +The four-part contract below is the canonical, domain-agnostic shape. The single +worked module under each part uses **one** neutral domain (deriving a calendar +date / weekday from a day-number) purely to make the shape concrete and +copyable; that domain is **illustrative only** — it is not a recommended target +and carries no special status. Transcribe the ROLES (a)/(b)/(c)/(d), the +mutual-validation rule, and the fail-open degradation into whatever domain your +AC actually inhabits. + A trustworthy oracle module has FOUR parts. An expected value is trusted only when the first-principles formula and the independent library agree within tolerance — neither alone is enough, because a single library silently shares @@ -18,33 +26,41 @@ its own conventions. ## (a) First-principles block — the spec formula, NO library -Implement the published spec directly, with no dependency on the +Implement the published spec / definition directly, with no dependency on the implementation's core or on any third-party library. This is the channel that is independent of EVERY library's conventions. ```js -// WCAG 2.x relative luminance / contrast, hand-implemented from the spec. -function srgbToLinear(c) { return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4; } -function relativeLuminanceFP(r8, g8, b8) { - const r = srgbToLinear(r8 / 255), g = srgbToLinear(g8 / 255), b = srgbToLinear(b8 / 255); - return 0.2126 * r + 0.7152 * g + 0.0722 * b; -} -function contrastRatioFP(a, b) { - const la = relativeLuminanceFP(...a), lb = relativeLuminanceFP(...b); - const hi = Math.max(la, lb), lo = Math.min(la, lb); - return (hi + 0.05) / (lo + 0.05); +// ILLUSTRATIVE ONLY (neutral domain): proleptic-Gregorian date from a day-number, +// hand-implemented from the published civil-from-days algorithm. No library. +function civilFromDaysFP(z) { // z = days since 1970-01-01 + z += 719468; + const era = Math.floor((z >= 0 ? z : z - 146096) / 146097); + const doe = z - era * 146097; // [0, 146096] + const yoe = Math.floor((doe - Math.floor(doe / 1460) + Math.floor(doe / 36524) - Math.floor(doe / 146096)) / 365); + const y = yoe + era * 400; + const doy = doe - (365 * yoe + Math.floor(yoe / 4) - Math.floor(yoe / 100)); + const mp = Math.floor((5 * doy + 2) / 153); // [0, 11], March-based + const d = doy - Math.floor((153 * mp + 2) / 5) + 1; + const m = mp < 10 ? mp + 3 : mp - 9; + return { year: m <= 2 ? y + 1 : y, month: m, day: d }; } ``` ## (b) Independent-library block — a DIFFERENT library than the SUT -Wrap a reference library that does NOT share the implementation's core (the SUT -uses culori → the oracle uses colorjs.io). This catches spec-implementation -mistakes the first-principles block might also make. +Wrap a reference library that does NOT share the implementation's core (if the +SUT rolls its own date math, the oracle reaches for a maintained datetime +library; if the SUT already depends on that library, pick a different one). This +catches spec-implementation mistakes the first-principles block might also make. ```js -import Color from 'colorjs.io'; -const cjsContrast = (a, b) => new Color(a).contrast(new Color(b), 'WCAG21'); +// ILLUSTRATIVE ONLY: a maintained datetime library as the independent reference. +import { DateTime } from 'luxon'; +const libCivilFromDays = (z) => { + const { year, month, day } = DateTime.fromMillis(z * 86400000, { zone: 'utc' }); + return { year, month, day }; +}; ``` ## (c) Seeded PRNG — reproducible fuzz @@ -62,30 +78,45 @@ function makeRng(seed) { // mulberry32 return ((t ^ (t >>> 14)) >>> 0) / 4294967296; }; } -// const rng = makeRng(101); for (let i = 0; i < 1000; i++) { /* assert invariant + oracle agree */ } +// const rng = makeRng(101); +// for (let i = 0; i < 1000; i++) { +// const z = Math.floor((rng() - 0.5) * 2_000_000); // wide, reproducible day-number sweep +// /* assert the invariant holds AND every oracle channel agrees on civilFromDays(z) */ +// } ``` ## (d) Second-algorithm differential helper — algorithm-vs-algorithm Where a SECOND independent ALGORITHM for the same contract exists, expose it so -the test can compare algorithm-vs-algorithm within tolerance — a membership -check (`inGamut`) is necessary-not-sufficient, because a wrong result can still -be in-range. +the test can compare algorithm-vs-algorithm within tolerance (or exactly, for +integer-valued contracts). A bare **membership / range** check (e.g. "the result +is a valid-only value within range" — the analogue of asserting a point is +in-range rather than the right point) is necessary-not-sufficient, because a +wrong result can still land inside the valid set: a containment invariant such as +"the mapped point stays within the allowed range / region" (the kind a gamut or +color-space membership test expresses) catches out-of-range escapes but never a +mere mis-mapping inside the boundary. ```js -// colorjs.io CSS (MINDE) gamut mapping — a DIFFERENT algorithm than culori's clampChroma. -const cjsToGamutCssHex = (input) => - new Color(input).toGamut({ space: 'srgb', method: 'css' }).to('srgb').toString({ format: 'hex' }); -const cjsDeltaEOK = (a, b) => new Color(a).deltaE(new Color(b), { method: 'ok' }); -// expect(cjsDeltaEOK(engineResult, cjsToGamutCssHex(input))).toBeLessThan(0.1); +// ILLUSTRATIVE ONLY: Zeller's congruence — a DIFFERENT algorithm for the weekday +// than counting days-mod-7 off the epoch. Exact agreement is expected (integer contract). +function zellerWeekday({ year, month, day }) { // 0 = Saturday … 6 = Friday + let m = month, y = year; + if (m < 3) { m += 12; y -= 1; } + const K = y % 100, J = Math.floor(y / 100); + return (day + Math.floor(13 * (m + 1) / 5) + K + Math.floor(K / 4) + Math.floor(J / 4) + 5 * J) % 7; +} +const weekdayFromEpoch = (z) => ((((z % 7) + 7) % 7) + 4) % 7; // 1970-01-01 was a Thursday +// const civ = civilFromDaysFP(z); +// expect((zellerWeekday(civ) + 1) % 7).toBe(weekdayFromEpoch(z)); // re-base Zeller's Sat=0 to Sun=0 ``` ## Mutual validation before trust (H1) ```js // The two independent oracles must agree BEFORE either is used as truth: -expect(Math.abs(contrastRatioFP(rgbA, rgbB) - cjsContrast(a, b))).toBeLessThan(2e-3); -// ...only then compare the implementation's RAW (pre-rounding) value against them. +expect(civilFromDaysFP(z)).toEqual(libCivilFromDays(z)); // or toBeCloseTo within tolerance for float contracts +// ...only then compare the implementation's RAW (pre-rounding / pre-canonicalisation) value against them. ``` ## Degradation (fail-open) diff --git a/skills/impl/references/tautological-assertion-rules.md b/skills/impl/references/tautological-assertion-rules.md index 2c70358..a52994d 100644 --- a/skills/impl/references/tautological-assertion-rules.md +++ b/skills/impl/references/tautological-assertion-rules.md @@ -100,10 +100,11 @@ rather than against an INDEPENDENT oracle (a reference library that does not share the implementation's core, a published formula, or a hand-computed truth table). The assertion passes whenever the code is self-consistent, even when the code is wrong, so it cannot observe a correctness regression in the quantity -it claims to check. This is the defect class that let a WCAG contrast solver -accept on a 2-decimal ROUNDED ratio — falsely reporting a target as met — past -a green suite, because every test re-measured with the same rounded value the -code produced. +it claims to check. This is the defect class that lets a test re-derive its +"expected" value from the implementation's own rounded / formatted output and +then assert against it — passing a green suite even when the underlying quantity +is wrong, because every test re-measures with the same rounded value the code +produced. Canonical signature: `assert_close(impl(x), K)` where `K` is derived from `impl` (e.g. `expected = impl.raw(x)`, or `expected = round(impl(x))`), OR the @@ -123,15 +124,15 @@ rule does NOT fire — see Limitations. BAD: - const r = solveForContrast(bg, target); // engine rounds ratio to 2dp - expect(r.ratio).toBeGreaterThanOrEqual(target); // R4: re-thresholds the code's own rounded field - const expected = Math.round(impl.contrast(a, b) * 100) / 100; - expect(impl.contrast(a, b)).toBeCloseTo(expected); // R4: expected derived from the SUT + const r = impl.solve(input, target); // engine rounds its result to 2dp + expect(r.value).toBeGreaterThanOrEqual(target); // R4: re-thresholds the code's own rounded field + const expected = Math.round(impl.compute(x) * 100) / 100; + expect(impl.compute(x)).toBeCloseTo(expected); // R4: expected derived from the SUT GOOD: - import Color from 'colorjs.io'; // independent oracle, no shared core - const oracle = Color.contrast(a, b, 'WCAG21'); - expect(rawContrast(a, b)).toBeCloseTo(oracle, 3); // raw value vs independent oracle, explicit tolerance + import { reference } from 'independent-oracle'; // distinct oracle, no shared core + const oracle = reference(x); + expect(impl.computeRaw(x)).toBeCloseTo(oracle, 3); // raw value vs independent oracle, explicit tolerance ## Hint Expressions diff --git a/skills/impl/references/test-authoring-guidance.md b/skills/impl/references/test-authoring-guidance.md index 22bce75..7cfce76 100644 --- a/skills/impl/references/test-authoring-guidance.md +++ b/skills/impl/references/test-authoring-guidance.md @@ -5,9 +5,9 @@ file when writing tests). This is the POSITIVE counterpart to [`tautological-assertion-rules.md`](tautological-assertion-rules.md) — that file says what NOT to write; this one says what a STRONG test looks like, scoped by AC type. It exists because a green suite proves the code is self-consistent, not -that it is correct: a dogfood build shipped a WCAG contrast solver that accepted -on a 2-decimal ROUNDED ratio and falsely reported a target as met, past 93 -passing tests, because every test re-measured with the same rounded value the +that it is correct: a dogfood build shipped a computed-value validator that +accepted on a rounded intermediate and falsely reported a target as met, past a +green suite, because every test re-measured with the same rounded value the code itself produced. ## When each technique applies @@ -26,9 +26,9 @@ exit code) needs only a direct assertion. 1. **Independent oracle (computational ACs).** Compare the implementation against an oracle that does NOT share its core: a third-party reference - library (e.g. `colorjs.io` cross-checking a culori-based engine), a published - formula / standard applied from first principles, or a hand-computed truth - table with a cited source. NEVER take the implementation's own output — + library (e.g. a second, independently-authored library cross-checking the + engine under test), a published formula / standard applied from first + principles, or a hand-computed truth table with a cited source. NEVER take the implementation's own output — directly, via an alias, or by re-reading a field the code already rounded — as the expected value. That circularity is rejected by tautological rule R4. At the `thorough` / `exhaustive` depth tier, for a standard-backed @@ -50,12 +50,12 @@ exit code) needs only a direct assertion. 3. **Property / invariant tests.** For math / transform / algorithm code, assert the laws, not just point values: monotonicity, symmetry, idempotence, - round-trip (`decode(encode(x)) == x`), gamut / range containment, and + round-trip (`decode(encode(x)) == x`), range / gamut containment, and conservation. A property holds across a distribution; a point test holds at one point. - When a second INDEPENDENT ALGORITHM for the same contract exists (e.g. - CSS-MINDE vs chroma-clamping gamut mapping, two independent sorts), at the - `thorough` / `exhaustive` depth tier add an **algorithm-vs-algorithm** + When a second INDEPENDENT ALGORITHM for the same contract exists (two + independent algorithms computing the same result, e.g. two independent sorts), + at the `thorough` / `exhaustive` depth tier add an **algorithm-vs-algorithm** differential within an explicit tolerance — a membership / containment check alone is necessary-not-sufficient, because a wrong result can still be in-range. Degrade to property coverage + a note where no second algorithm @@ -63,8 +63,8 @@ exit code) needs only a direct assertion. 4. **Adversarial / non-finite / out-of-range inputs by default.** For any function taking external or untrusted input, include empty, `NaN`, - `Infinity`, negative, zero, overflow, malformed, and out-of-gamut / - out-of-range cases as STANDARD cases, not afterthoughts. These catch DoS + `Infinity`, negative, zero, overflow, malformed, and out-of-range cases as + STANDARD cases, not afterthoughts. These catch DoS hangs (e.g. an unbounded binary search on `Infinity`) and contract-violating outputs (e.g. impossible channel values) that happy-path fixtures miss. @@ -77,8 +77,9 @@ exit code) needs only a direct assertion. tokens (`NaN` / `Infinity` as literal keywords, malformed syntax) that the parser / validator rejects at the door: these exercise the cheap early-return error path, usually already correct. (b) *Parse-accepted-then-overflows* values that pass syntactic parsing but produce a - non-finite / out-of-range INTERMEDIATE deeper in the algorithm — e.g. `oklch(0.5 1e400 30)` - (scientific notation that parses to Infinity chroma), extreme-but-finite magnitudes, denormals, + non-finite / out-of-range INTERMEDIATE deeper in the algorithm — i.e. an input the parser + ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion (e.g. scientific + notation that parses to an Infinity component), extreme-but-finite magnitudes, denormals, or values that overflow only after a multiply. Class (b) is where real DoS hangs and corrupt-success bugs live (an unbounded binary-search / clamp loop on an Infinity intermediate); a suite that tests only class (a) passes green while shipping the class-(b) bug. For every numeric @@ -87,19 +88,19 @@ exit code) needs only a direct assertion. never returns a non-error success carrying null / NaN fields. **Sibling-guard symmetry.** When the function under test shares an input parser / validation - boundary with sibling tools (e.g. several MCP tools that each parse the same color string), the - input-validation guard (finiteness / range / gamut) MUST either live in the SHARED parse / + boundary with sibling tools (e.g. several tools / endpoints parsing the same input class), the + input-validation guard (finiteness / range) MUST either live in the SHARED parse / validation path so every sibling inherits it, OR be replicated AND adversarially tested in EVERY sibling tool that accepts that input class. A guard wired into one tool but absent from its analogous siblings is exactly the `CLAUDE.md ## Modifications` sibling-artifact miss — a dogfood - build added a finite-components guard to the solver but not the analogous `gamut_map` / - `parse_color` tools, shipping a live DoS hang reachable through the unguarded siblings while the - guarded solver passed. Write the class-(b) adversarial test against EACH sibling tool, not only + build added a finiteness guard to one tool but not the analogous sibling tools parsing the same + input class, shipping a live DoS hang reachable through the unguarded siblings while the + guarded tool passed. Write the class-(b) adversarial test against EACH sibling tool, not only the one tool the AC names. 5. **Spec-completeness.** Assert every output field and guarantee the spec - promises — a missing field, an absent `inGamut` flag, a dropped `deltaE`, or - a "base color preserved" guarantee that no test checks is an untested + promises — a missing field, an absent status flag, a dropped metric field, or + a "base input preserved" guarantee that no test checks is an untested contract. Enumerate the promised outputs and assert each. 6. **Black-box over white-box.** Exercise the public / protocol boundary (the diff --git a/skills/impl/references/verification-depth.md b/skills/impl/references/verification-depth.md index 5c46e0c..b1da96b 100644 --- a/skills/impl/references/verification-depth.md +++ b/skills/impl/references/verification-depth.md @@ -82,27 +82,36 @@ evaluator model, and leaves the red-team budget at 0. The matrix above scales depth by blast-radius and autonomy. It does NOT account for **correctness criticality** — a tiny `S` ticket can still ship a -wrong-but-self-consistent computed value (the WCAG rounded-meet defect class). +wrong-but-self-consistent computed value (the rounded-meet defect class — a +value that matches the implementation's own rounded output yet is wrong). The criticality floor adds that axis: when a ticket contains at least one **computational AC** (PASS/FAIL hinges on a computed numeric/algorithmic value — see Gate 7 in `skills/create-ticket/references/ac-quality-criteria.md`) in a -**critical domain** — accessibility / security / money / data-integrity / -standard-compliance — the resolved tier is floored at `thorough` regardless of +**critical domain**, the resolved tier is floored at `thorough` regardless of Size × `risk_tolerance`, so the `/audit` skeptical third-pass is forced even on an `S` / `conservative` ticket. The critical-domain determination is a -model-judgment read of the AC text (there is no deterministic ticket field); -keyword cues that should trigger it: WCAG / contrast / a11y / focus-order -/ color-space / gamut / OKLab / luminance / chroma conversion (accessibility & -color-science); auth / crypto / token / signature / input-validation -(security); currency / decimal / rounding / money (money); checksum / hash / -dedup / referential-integrity (data-integrity); RFC / ISO / spec-conformance -(standard-compliance); and any **computational AC over a shared-core input -boundary** — a parser / validation / constant (e.g. an epsilon / range / gamut -guard) shared with sibling tools, where an inconsistency in one sibling is the -exact wrong-but-self-consistent defect class the floor targets. The shared-core -trigger is independent of the named domains above: a computational AC that reads -or must hold an invariant across a shared input boundary floors `critical` even -when its surface domain is otherwise routine. +model-judgment read of the AC text (there is no deterministic ticket field). + +The PRIMARY trigger is a **property**, not membership in a named-domain list: +any **computational AC over a shared-core input boundary** — a parser / +validation / constant (e.g. an epsilon / range / bounds guard) shared with +sibling tools, where an inconsistency in one sibling is the exact +wrong-but-self-consistent defect class the floor targets — floors `critical`. +This shared-boundary property is independent of surface domain: a computational +AC that reads or must hold an invariant across a shared input boundary floors +`critical` even when its domain is otherwise routine. Equally, an AC whose +computed value is **correctness-critical** — a wrong result carries outsized +real-world cost, or the value must conform to a published spec / standard — +floors `critical`. + +The domain families below are **illustrative and non-exhaustive**: they help the +model recognise the property above, they do NOT bound it. A ticket that matches +the property but names none of these still floors `critical`; a ticket that +mentions a cue but carries no computational / correctness-critical AC does not. +Balanced examples — accessibility (e.g. contrast / color-space ratios); +security (e.g. auth / crypto / input-validation); money (e.g. currency / decimal +rounding); data-integrity (e.g. checksum / referential-integrity); and +standard-compliance (e.g. RFC / ISO conformance). The floor only RAISES the tier (`standard` → `thorough`); it never lowers a tier the matrix already resolved higher (`exhaustive` stays `exhaustive`). It is @@ -259,9 +268,9 @@ The resolver also fills two struct fields the floor RAISES: - **evaluator model**: today the evaluator is hardcoded sonnet (`skills/impl/SKILL.md` Step 15 "always sonnet"; `agents/ac-evaluator.md` frontmatter `model: sonnet`). M5 resolves `evaluator_model` to `opus` when `criticality == critical` OR - `depth_tier == exhaustive`, symmetric with the EXISTING size-aware generator-model - selection (`constraints.sonnet_size_threshold` escalates the generator to opus for - L/XL — `skills/create-ticket/references/autopilot-policy-reference.md`). **Platform + `depth_tier == exhaustive` (the Generator already always runs on opus — see the + **Generator model policy** in + `skills/create-ticket/references/autopilot-policy-reference.md`). **Platform caveat**: the Agent tool's JSONSchema does NOT accept a per-invocation `model:` override — the SAME Strategy-B limitation that forces the soft turn budget instead of a per-spawn `maxTurns` (`skills/impl/references/ac-evaluator-orchestration.md` diff --git a/tests/test-autopilot-continue.sh b/tests/test-autopilot-continue.sh index f218d11..be3d1cd 100644 --- a/tests/test-autopilot-continue.sh +++ b/tests/test-autopilot-continue.sh @@ -1322,5 +1322,52 @@ else fi cleanup_test_repo +# ============================================================ +# AC-NESTED (proposal 3 / ST-01): nested-form scout in_progress — block stop. +# WI-3 schema-tolerance regression guard. The prior flat-only grep in the +# continuation driver matched `scout: in_progress` but NOT the nested +# `scout:\n status: in_progress` shape, so a purely nested state yielded +# ACTIVE_STEPS=0 and allowed a premature stop. Routing ACTIVE_STEPS/NEXT_STEP +# through parse_active_steps must now block. Reverting that refactor makes this +# case FAIL (decision != block). +# ============================================================ +echo "--- AC-NESTED: nested-form scout in_progress (WI-3) ---" + +setup_test_repo +create_state_file "test-slug" "version: 1 +slug: test-slug +started: 2026-04-15T00:00:00Z +execution_mode: single +total_tickets: 1 +tickets: + - logical_id: test-slug + ticket_dir: 001-test + status: in_progress + steps: + create-ticket: + status: completed + scout: + status: in_progress + impl: + status: pending + ship: + status: pending" + +run_autopilot_hook '{"session_id":"test-nested"}' "$TEST_REPO" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +DECISION=$(echo "$LAST_STDOUT" | jq -r '.decision // ""' 2>/dev/null || echo "") +REASON_NEXT=$(echo "$LAST_STDOUT" | jq -r '.reason // ""' 2>/dev/null | grep -c 'scout' || true) +if [ "$DECISION" = "block" ] && [ "$REASON_NEXT" -ge 1 ]; then + echo -e " ${GREEN}PASS${NC} nested-form scout in_progress: decision=block, next step 'scout' resolved (WI-3 nested tolerance)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} nested-form scout in_progress: expected decision=block with next step 'scout'" + echo -e " Exit code: $LAST_EXIT_CODE, Decision: '$DECISION', scout-in-reason: '$REASON_NEXT'" + echo -e " Stdout: $LAST_STDOUT" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi +rm -f /tmp/.autopilot-continue-test-nested +cleanup_test_repo + echo "" print_summary diff --git a/tests/test-hooks-lib.sh b/tests/test-hooks-lib.sh index 204b165..ec59a52 100755 --- a/tests/test-hooks-lib.sh +++ b/tests/test-hooks-lib.sh @@ -1049,9 +1049,14 @@ printf 'phases:\n scout: {status: completed}\n impl: {status: completed}\n sh sa_ac5_out="$(bash -c "source '$SA_PATH' && resolve_active_state_file '$SA_T5'")" assert_eq "AC-5: rejects done-incomplete (empty stdout)" "" "$sa_ac5_out" -# AC-6: HOOK_OWNED_FIELDS empty by default +# AC-6 (proposal 4 / Foundation 3): HOOK_OWNED_FIELDS ships with exactly ONE +# entry, .runtime_metrics (the append-only telemetry list). The resulting DENY is +# gated by SW_STATE_FIELD_GUARD_MODE in pre-write/pre-edit (default metric-only), +# so a non-empty registry does not change the shipped allow-by-default behaviour. sa_ac6_count="$(bash -c "source '$SA_PATH' && echo \${#HOOK_OWNED_FIELDS[@]}")" -assert_eq "AC-6: registry empty by default" "0" "$sa_ac6_count" +assert_eq "AC-6: registry ships with exactly 1 entry (.runtime_metrics)" "1" "$sa_ac6_count" +sa_ac6_key="$(bash -c "source '$SA_PATH' && printf '%s\n' \"\${!HOOK_OWNED_FIELDS[@]}\"")" +assert_eq "AC-6: the registered field is .runtime_metrics" ".runtime_metrics" "$sa_ac6_key" # AC-7: is_hook_owned_field returns 1 on unknown set +e @@ -1126,6 +1131,19 @@ sa_ac13_exit=$? set -e assert_exit_nonzero "AC-13: initial set is allowed" "$sa_ac13_exit" +# AC-OWN-RM (proposal 4 / Foundation 3): with the SHIPPED registry (no temp +# injection), state_field_change_blocked BLOCKS a .runtime_metrics change and +# echoes the violated key on stdout; a non-owned field change still allows. +set +e +sa_ownrm_field="$(bash -c "source '$SA_PATH'; state_field_change_blocked /tmp/x 'runtime_metrics: []' 'runtime_metrics: [{boundary: x}]'")" +sa_ownrm_exit=$? +bash -c "source '$SA_PATH'; state_field_change_blocked /tmp/x 'status: pending' 'status: completed'" >/dev/null 2>&1 +sa_ownrm_other_exit=$? +set -e +assert_exit_zero "AC-OWN-RM: shipped registry blocks a .runtime_metrics change" "$sa_ownrm_exit" +assert_eq "AC-OWN-RM: blocked field echoed is .runtime_metrics" ".runtime_metrics" "$sa_ownrm_field" +assert_exit_nonzero "AC-OWN-RM: a non-owned field change still allows" "$sa_ownrm_other_exit" + # Negative AC-1: exactly 3 new public functions + HOOK_OWNED_FIELDS public var sa_neg_ac1_before_funcs="$(declare -F | awk '{print $3}' | sort -u)" # shellcheck disable=SC1090 @@ -1135,11 +1153,13 @@ sa_neg_ac1_new_funcs="$(comm -13 <(printf '%s\n' "$sa_neg_ac1_before_funcs") <(p sa_neg_ac1_new_func_count="$(printf '%s\n' "$sa_neg_ac1_new_funcs" | grep -c '[^[:space:]]' || true)" assert_eq "Negative-AC-1: exactly 3 new public functions (no _ prefix)" "3" "$sa_neg_ac1_new_func_count" -# Negative AC-2: no per-key insertions in the lib +# Negative AC-2: no STRAY per-key registry insertions. The single controlled +# entry (.runtime_metrics) is set inline in the `declare -A HOOK_OWNED_FIELDS=(...)` +# line, NOT via `HOOK_OWNED_FIELDS[k]=` — so there must still be zero of those. set +e sa_neg_ac2_count="$(grep -cnE '^HOOK_OWNED_FIELDS\[' "$SA_PATH")" set -e -assert_eq "Negative-AC-2: no registry pre-population" "0" "$sa_neg_ac2_count" +assert_eq "Negative-AC-2: no stray per-key registry insertions (controlled inline entry only)" "0" "$sa_neg_ac2_count" # Negative AC-3: no scheduler-coupling identifiers in the lib file. # Pattern assembled from hex parts to prevent this script itself from matching. diff --git a/tests/test-pre-bash-contract-guard.sh b/tests/test-pre-bash-contract-guard.sh index 3802b80..11ea44d 100755 --- a/tests/test-pre-bash-contract-guard.sh +++ b/tests/test-pre-bash-contract-guard.sh @@ -253,5 +253,70 @@ assert_guard_allow \ "$CMD_E" \ "$TMP_E" +# --------------------------------------------------------------------------- +# Scenario (f): Detection 3 (proposal 4 / ST-04) -- Bash-mediated state-file +# status mutation, gated by SW_BASH_STATE_GUARD_MODE (default metric-only). +# --------------------------------------------------------------------------- +echo "" +echo "--- Scenario (f): Bash state-file status mutation (SW_BASH_STATE_GUARD_MODE) ---" +TMP_F="$(mktemp -d)" +register_cleanup "$TMP_F" +SLUG_F="state-mutate-slug" +mkdir -p "$TMP_F/.simple-workflow/backlog/briefs/active/$SLUG_F" +write_autopilot_state \ + "$TMP_F/.simple-workflow/backlog/briefs/active/$SLUG_F/autopilot-state.yaml" \ + "$SLUG_F" + +# run_guard variant that sets SW_BASH_STATE_GUARD_MODE for the hook process. +run_guard_mode() { + local mode="$1" command="$2" cwd="$3" payload so se + payload=$(jq -n --arg cmd "$command" --arg cwd "$cwd" \ + '{tool_name:"Bash", tool_input:{command:$cmd}, cwd:$cwd, session_id:"test", transcript_path:""}') + so=$(mktemp); se=$(mktemp) + set +e + printf '%s' "$payload" | env SW_BASH_STATE_GUARD_MODE="$mode" bash "$HOOK_PATH" >"$so" 2>"$se" + LAST_EXIT_CODE=$? + set -e + LAST_STDOUT=$(cat "$so"); LAST_STDERR=$(cat "$se"); rm -f "$so" "$se" +} + +CMD_F_MUTATE='yq -i ".tickets[].status = \"skipped\"" autopilot-state.yaml' + +# (f1) knob=on -> decision:block with unauthorized_state_mutate_bash + schema ref. +run_guard_mode on "$CMD_F_MUTATE" "$TMP_F" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if printf '%s' "$LAST_STDOUT" | grep -q '"decision":"block"' \ + && printf '%s' "$LAST_STDOUT" | grep -q 'unauthorized_state_mutate_bash' \ + && printf '%s' "$LAST_STDOUT" | grep -q 'docs/state-schema.md'; then + echo -e " ${GREEN}PASS${NC} (f1) knob=on: Bash status mutation blocked (unauthorized_state_mutate_bash + docs/state-schema.md ref)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} (f1) knob=on: expected decision:block. stdout: $LAST_STDOUT" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +# (f2) metric-only (the shipped default) -> NOT blocked; stderr logs would-deny. +run_guard_mode metric-only "$CMD_F_MUTATE" "$TMP_F" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if ! printf '%s' "$LAST_STDOUT" | grep -q '"decision":"block"' \ + && printf '%s' "$LAST_STDERR" | grep -q 'metric-only: would deny unauthorized_state_mutate_bash'; then + echo -e " ${GREEN}PASS${NC} (f2) metric-only (default): not blocked, logs would-deny to stderr" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} (f2) metric-only: expected allow + stderr would-deny. stdout: $LAST_STDOUT stderr: $LAST_STDERR" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +# (f3) knob=on + legitimate read-only command on a state file -> allowed (no mutation). +run_guard_mode on "grep skipped autopilot-state.yaml" "$TMP_F" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if ! printf '%s' "$LAST_STDOUT" | grep -q '"decision":"block"'; then + echo -e " ${GREEN}PASS${NC} (f3) knob=on: read-only 'grep skipped' on state file allowed (no mutation)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} (f3) knob=on: read-only command should be allowed. stdout: $LAST_STDOUT" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + echo "" print_summary diff --git a/tests/test-pre-bash-safety.sh b/tests/test-pre-bash-safety.sh index ecfc9cb..07b82c7 100755 --- a/tests/test-pre-bash-safety.sh +++ b/tests/test-pre-bash-safety.sh @@ -18,6 +18,17 @@ assert_blocked "BLOCK: rm -rf /path" \ assert_blocked "BLOCK: rm -fr /path (reversed flags)" \ "rm -fr /some/path" +# F-HOOKS-04: separated short flags `-r -f` / `-f -r` were a blind spot — the +# combined (`-rf`/`-fr`) and long-form (`-r --force`) alternatives missed them. +assert_blocked "BLOCK: rm -r -f /path (separated short flags)" \ + "rm -r -f /some/path" + +assert_blocked "BLOCK: rm -f -r /path (separated short flags, reversed)" \ + "rm -f -r /some/path" + +assert_blocked "BLOCK: rm -r -i -f /path (separated flags with intervening -i)" \ + "rm -r -i -f /some/path" + assert_blocked "BLOCK: rm -rfi /path (extra flags mixed)" \ "rm -rfi /some/path" @@ -679,6 +690,44 @@ assert_allowed "ALLOW: git push origin some--no-verify-branch (no-verify in bran echo "" +# ============================================================ +# UX-11 (proposal 5): jq-missing fail-close is knob-gated +# (SW_SAFETY_JQ_MISSING_MODE). PATH-restricted — an empty dir as PATH hides jq +# while bash is invoked by absolute path so the guard reaches its jq preflight. +# ============================================================ +_JQ_BASH="$(command -v bash)" +_JQ_NOPATH="$(mktemp -d)" +_JQ_HOOK="$HOOK_DIR/pre-bash-safety.sh" + +set +e +_jq_on_out="$(printf '{"tool_input":{"command":"echo hi"}}' | env PATH="$_JQ_NOPATH" SW_SAFETY_JQ_MISSING_MODE=on "$_JQ_BASH" "$_JQ_HOOK" 2>&1)" +_jq_on_rc=$? +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$_jq_on_rc" -eq 2 ] && printf '%s' "$_jq_on_out" | grep -qF '[SAFETY-JQ-MISSING]'; then + echo -e " ${GREEN}PASS${NC} jq-missing + knob=on: fail-closed (exit 2) with [SAFETY-JQ-MISSING] message" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} jq-missing + knob=on: expected exit 2 + message (rc=$_jq_on_rc, out=${_jq_on_out:0:80})" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +set +e +_jq_def_out="$(printf '{"tool_input":{"command":"echo hi"}}' | env PATH="$_JQ_NOPATH" "$_JQ_BASH" "$_JQ_HOOK" 2>&1)" +_jq_def_rc=$? +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$_jq_def_rc" -eq 0 ] && printf '%s' "$_jq_def_out" | grep -qF 'metric-only'; then + echo -e " ${GREEN}PASS${NC} jq-missing + default: metric-only allows (exit 0) with message" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} jq-missing + default: expected exit 0 + metric-only message (rc=$_jq_def_rc)" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi +rmdir "$_JQ_NOPATH" 2>/dev/null || true + +echo "" + # ============================================================ # Summary # ============================================================ diff --git a/tests/test-pre-edit-safety.sh b/tests/test-pre-edit-safety.sh index e360dc2..f0f6f64 100755 --- a/tests/test-pre-edit-safety.sh +++ b/tests/test-pre-edit-safety.sh @@ -205,6 +205,31 @@ else TESTS_FAILED=$((TESTS_FAILED + 1)) fi +# F-HOOKS-03: legitimate source/doc files that merely CONTAIN "credentials" or +# "secret" in the name must NOT be false-blocked — only secret-bearing +# extensions are. These two ALLOW assertions FAIL under the prior +# `credentials\b|secret\b` regex (revert guard), while `.env` / `.ssh/id_rsa` / +# `credentials.json` / `app-secret.yaml` remain blocked above. +run_edit_hook "credentials.ts" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$LAST_EXIT_CODE" -eq 0 ]; then + echo -e " ${GREEN}PASS${NC} ALLOW: credentials.ts (source file, not a secret)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} ALLOW: credentials.ts" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +run_edit_hook "secret.md" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$LAST_EXIT_CODE" -eq 0 ]; then + echo -e " ${GREEN}PASS${NC} ALLOW: secret.md (doc file, not a secret)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} ALLOW: secret.md" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + echo "" # --- PII / absolute-home-path tests --- @@ -317,4 +342,80 @@ assert_pii_allow_edit "Edge3 (edit): empty new_string allowed" \ echo "" +# UX-11 (proposal 5): jq-missing fail-close is knob-gated (SW_SAFETY_JQ_MISSING_MODE). +# PATH-restricted — an empty dir as PATH hides jq while bash is invoked by absolute +# path so the guard reaches its jq preflight. +_JQ_BASH="$(command -v bash)" +_JQ_NOPATH="$(mktemp -d)" + +set +e +_jq_on_out="$(printf '{"tool_input":{"file_path":"x"}}' | env PATH="$_JQ_NOPATH" SW_SAFETY_JQ_MISSING_MODE=on "$_JQ_BASH" "$HOOK" 2>&1)" +_jq_on_rc=$? +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$_jq_on_rc" -eq 2 ] && printf '%s' "$_jq_on_out" | grep -qF '[SAFETY-JQ-MISSING]'; then + echo -e " ${GREEN}PASS${NC} jq-missing + knob=on: fail-closed (exit 2) with [SAFETY-JQ-MISSING] message" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} jq-missing + knob=on: expected exit 2 + message (rc=$_jq_on_rc, out=${_jq_on_out:0:80})" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +set +e +_jq_def_out="$(printf '{"tool_input":{"file_path":"x"}}' | env PATH="$_JQ_NOPATH" "$_JQ_BASH" "$HOOK" 2>&1)" +_jq_def_rc=$? +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$_jq_def_rc" -eq 0 ] && printf '%s' "$_jq_def_out" | grep -qF 'metric-only'; then + echo -e " ${GREEN}PASS${NC} jq-missing + default: metric-only allows (exit 0) with message" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} jq-missing + default: expected exit 0 + metric-only message (rc=$_jq_def_rc)" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi +rmdir "$_JQ_NOPATH" 2>/dev/null || true + +echo "" + +# Proposal 4 / ST-03: HOOK_OWNED_FIELDS enforcement is gated by +# SW_STATE_FIELD_GUARD_MODE (default metric-only). With the knob ON, an Edit that +# changes the hook-owned `.runtime_metrics` field on a state file is blocked, and +# the block reason names the violated field AND references docs/state-schema.md. +# Default (metric-only) does NOT block — it logs a [STATE-FIELD-GUARD] line. +_SFG_EDIT_INPUT=$(jq -n \ + --arg fp "/tmp/sfg/autopilot-state.yaml" \ + --arg o 'runtime_metrics: []' \ + --arg n 'runtime_metrics: [{boundary: x}]' \ + '{tool_input:{file_path:$fp, old_string:$o, new_string:$n}}') + +set +e +_sfg_on_out="$(printf '%s' "$_SFG_EDIT_INPUT" | env SW_STATE_FIELD_GUARD_MODE=on bash "$HOOK" 2>&1)" +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if printf '%s' "$_sfg_on_out" | grep -q '"decision":"block"' \ + && printf '%s' "$_sfg_on_out" | grep -q 'hook_owned_field_violation' \ + && printf '%s' "$_sfg_on_out" | grep -q '\.runtime_metrics' \ + && printf '%s' "$_sfg_on_out" | grep -q 'docs/state-schema.md'; then + echo -e " ${GREEN}PASS${NC} state-field guard knob=on: .runtime_metrics Edit blocked (reason names field + docs/state-schema.md)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} state-field guard knob=on: expected decision:block with field name + schema ref. out: ${_sfg_on_out:0:140}" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +set +e +_sfg_def_out="$(printf '%s' "$_SFG_EDIT_INPUT" | env SW_STATE_FIELD_GUARD_MODE=metric-only bash "$HOOK" 2>&1)" +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if ! printf '%s' "$_sfg_def_out" | grep -q '"decision":"block"' \ + && printf '%s' "$_sfg_def_out" | grep -q '\[STATE-FIELD-GUARD\] metric-only'; then + echo -e " ${GREEN}PASS${NC} state-field guard metric-only (default): .runtime_metrics Edit not blocked, logs would-block" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} state-field guard metric-only: expected allow + [STATE-FIELD-GUARD] log. out: ${_sfg_def_out:0:140}" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +echo "" + print_summary diff --git a/tests/test-pre-write-safety.sh b/tests/test-pre-write-safety.sh index 05ffa1f..abb3ff4 100755 --- a/tests/test-pre-write-safety.sh +++ b/tests/test-pre-write-safety.sh @@ -205,6 +205,31 @@ else TESTS_FAILED=$((TESTS_FAILED + 1)) fi +# F-HOOKS-03: legitimate source/doc files that merely CONTAIN "credentials" or +# "secret" in the name must NOT be false-blocked — only secret-bearing +# extensions are. These two ALLOW assertions FAIL under the prior +# `credentials\b|secret\b` regex (revert guard), while `.env` / `.ssh/id_rsa` / +# `credentials.json` / `app-secret.yaml` remain blocked above. +run_write_hook "credentials.ts" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$LAST_EXIT_CODE" -eq 0 ]; then + echo -e " ${GREEN}PASS${NC} ALLOW: credentials.ts (source file, not a secret)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} ALLOW: credentials.ts" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +run_write_hook "secret.md" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$LAST_EXIT_CODE" -eq 0 ]; then + echo -e " ${GREEN}PASS${NC} ALLOW: secret.md (doc file, not a secret)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} ALLOW: secret.md" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + echo "" # --- PII / absolute-home-path tests --- @@ -323,4 +348,39 @@ assert_pii_allow "Neg AC6 (write): fenced /Users/runner/work/ in code block allo echo "" +# UX-11 (proposal 5): jq-missing fail-close is knob-gated (SW_SAFETY_JQ_MISSING_MODE). +# PATH-restricted — an empty dir as PATH hides jq while bash is invoked by absolute +# path so the guard reaches its jq preflight. +_JQ_BASH="$(command -v bash)" +_JQ_NOPATH="$(mktemp -d)" + +set +e +_jq_on_out="$(printf '{"tool_input":{"file_path":"x"}}' | env PATH="$_JQ_NOPATH" SW_SAFETY_JQ_MISSING_MODE=on "$_JQ_BASH" "$HOOK" 2>&1)" +_jq_on_rc=$? +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$_jq_on_rc" -eq 2 ] && printf '%s' "$_jq_on_out" | grep -qF '[SAFETY-JQ-MISSING]'; then + echo -e " ${GREEN}PASS${NC} jq-missing + knob=on: fail-closed (exit 2) with [SAFETY-JQ-MISSING] message" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} jq-missing + knob=on: expected exit 2 + message (rc=$_jq_on_rc, out=${_jq_on_out:0:80})" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +set +e +_jq_def_out="$(printf '{"tool_input":{"file_path":"x"}}' | env PATH="$_JQ_NOPATH" "$_JQ_BASH" "$HOOK" 2>&1)" +_jq_def_rc=$? +set -e +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if [ "$_jq_def_rc" -eq 0 ] && printf '%s' "$_jq_def_out" | grep -qF 'metric-only'; then + echo -e " ${GREEN}PASS${NC} jq-missing + default: metric-only allows (exit 0) with message" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} jq-missing + default: expected exit 0 + metric-only message (rc=$_jq_def_rc)" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi +rmdir "$_JQ_NOPATH" 2>/dev/null || true + +echo "" + print_summary diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index 0cc1be3..944df18 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -2470,6 +2470,26 @@ fi echo "" +# CT-MODE-17 (README execution-chain #2 re-propagation, proposal 6): the README +# "Brief manually, then switch to autopilot" execution chain must show the +# chain=off -> set chain: on -> re-run /create-ticket brief= -> /autopilot +# re-propagation sequence (aligned with brief Step 3 + the autopilot manual-brief +# hard-stop), NOT the old /create-ticket -> /autopilot dead-end, and the stale +# `/brief mode=manual|auto` execution-chain commands must be gone. +echo "--- CT-MODE-17 ---" +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +if grep -qF 're-run /create-ticket so each ticket dir receives autopilot-policy.yaml' "$REPO_DIR/README.md" \ + && grep -qF '/create-ticket brief=.simple-workflow/backlog/briefs/active//brief.md' "$REPO_DIR/README.md" \ + && ! grep -qE '/brief mode=(manual|auto)' "$REPO_DIR/README.md"; then + echo -e " ${GREEN}PASS${NC} CT-MODE-17: README execution chain #2 documents the /create-ticket re-propagation sequence (chain=off -> chain: on -> re-run /create-ticket -> /autopilot); stale mode= execution chains removed" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} CT-MODE-17: README execution chain #2 must show the re-propagation sequence (re-run /create-ticket brief= before /autopilot) and drop the mode= execution-chain commands" + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi + +echo "" + # ============================================================================= # Category AD: /audit per-Category checklist references contract # Diff: New category. Verifies that the canonical per-Category checklist @@ -5124,6 +5144,31 @@ else fi rm -rf "$AC12_TMP" +# CT-AC-12b (proposal 4 / ST-02): product_backlog-form ticket_dir state-lie. A +# fabricated `ship: completed` on a NEVER-SCOUTED ticket whose ticket_dir still +# holds the initial `product_backlog/` form must be caught by Gate 5: the +# product_backlog -> done/ rewrite makes the -d existence check fail (no done/ +# dir) so the state-lie protection fires. Without that rewrite arm the +# product_backlog/ dir existed and the lie passed (false negative), so this +# assertion FAILs on the pre-fix code. +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +AC12B_TMP=$(mktemp -d) +mkdir -p "$AC12B_TMP/.simple-workflow/backlog/briefs/active/dummy" +mkdir -p "$AC12B_TMP/.simple-workflow/backlog/product_backlog/dummy/001-fakery" +# done/ deliberately NOT created — the ticket was never actually shipped. +AC12B_NEW=$(printf 'tickets:\n - logical_id: dummy-part-1\n ticket_dir: .simple-workflow/backlog/product_backlog/dummy/001-fakery\n status: completed\n steps:\n scout: completed\n impl: completed\n ship: completed\n') +printf '%s' "$AC12B_NEW" > "$AC12B_TMP/.simple-workflow/backlog/briefs/active/dummy/autopilot-state.yaml" +AC12B_INPUT=$(jq -n --arg fp "$AC12B_TMP/.simple-workflow/backlog/briefs/active/dummy/autopilot-state.yaml" --arg ns "$AC12B_NEW" '{tool_input:{file_path:$fp,new_string:$ns}}') +AC12B_OUT=$(cd "$AC12B_TMP" && INPUT="$AC12B_INPUT" TMUX=fake-socket INJECT_KEYS_DRY_RUN=1 SW_TEST_HARNESS=1 PATH="$AC_STUB_DIR:$PATH" bash -c "printf '%s' \"\$INPUT\" | bash \"$AC_HOOK_SAFETY\"" 2>&1 || true) +if echo "$AC12B_OUT" | grep -qE 'state-lie protection' && ! echo "$AC12B_OUT" | grep -qE '\[inject-keys\] DRY_RUN backend='; then + echo -e " ${GREEN}PASS${NC} CT-AC-12b: product_backlog-form ticket_dir state-lie caught (no inject)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} CT-AC-12b: product_backlog state-lie NOT caught. Output: $AC12B_OUT" >&2 + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi +rm -rf "$AC12B_TMP" + # CT-AC-13: dedup — fresh sentinel present -> no-op (Gate 6). When the # primary already fired and wrote .auto-compact-pending, the safety-net # must short-circuit so the user only sees ONE /compact per boundary. @@ -5165,6 +5210,29 @@ else fi rm -rf "$AC14_TMP" +# CT-AC-14b (proposal 3 / ST-11): inline-flow ship-completed payload reaches the +# dispatcher. The Gate-2 payload detector must accept the template-seeded inline +# `steps: {…, ship: completed}` shape, not only the flat `ship: completed`. +# Reverting the `completed([[:space:],}]|$)` trailing class makes the flat grep +# miss `ship: completed}`, Gate 2 short-circuits via `|| exit 0`, and the +# dispatcher is never reached — so this assertion FAILs on the pre-fix code. +TESTS_TOTAL=$((TESTS_TOTAL + 1)) +AC14B_TMP=$(mktemp -d) +mkdir -p "$AC14B_TMP/.simple-workflow/backlog/briefs/active/dummy" +mkdir -p "$AC14B_TMP/.simple-workflow/backlog/done/dummy/001-shipped" +touch "$AC14B_TMP/.simple-workflow/backlog/briefs/active/dummy/autopilot-state.yaml" +AC14B_NEW=$(printf 'tickets:\n - logical_id: dummy-part-1\n ticket_dir: .simple-workflow/backlog/done/dummy/001-shipped\n status: completed\n steps: {scout: completed, impl: completed, ship: completed}\n') +AC14B_INPUT=$(jq -n --arg fp "$AC14B_TMP/.simple-workflow/backlog/briefs/active/dummy/autopilot-state.yaml" --arg ns "$AC14B_NEW" '{tool_input:{file_path:$fp,new_string:$ns}}') +AC14B_OUT=$(cd "$AC14B_TMP" && INPUT="$AC14B_INPUT" env -u SW_AUTO_COMPACT_ON_SHIP_MODE TMUX=fake-socket INJECT_KEYS_DRY_RUN=1 SW_TEST_HARNESS=1 PATH="$AC_STUB_DIR:$PATH" bash -c "printf '%s' \"\$INPUT\" | bash \"$AC_HOOK_SAFETY\"" 2>&1 || true) +if echo "$AC14B_OUT" | grep -qE '\[inject-keys\] DRY_RUN backend='; then + echo -e " ${GREEN}PASS${NC} CT-AC-14b: safety-net — inline-flow ship-completed payload reaches dispatcher (Gate 2 flow tolerance)" + TESTS_PASSED=$((TESTS_PASSED + 1)) +else + echo -e " ${RED}FAIL${NC} CT-AC-14b: inline-flow ship-completed payload did NOT reach dispatcher. Output: $AC14B_OUT" >&2 + TESTS_FAILED=$((TESTS_FAILED + 1)) +fi +rm -rf "$AC14B_TMP" + rm -rf "$AC_STUB_DIR" # --- Shared infrastructure (CT-AC-15..22) --------------------------------- @@ -9845,6 +9913,101 @@ assert_true \ "CT-EV-PANEL-ROBUST-1 (L-ROBUSTNESS + Gate 9 R2 adversarial-key vector): ac-evaluator ($ev_protopol_acev>=1) + -hi mirror ($ev_protopol_hi>=1) + orchestration ($ev_protopol_orch>=1) + Gate 9 R2 ($ev_protopol_acqc>=1)" \ "$ev_protopol_result" +# CT-EV-PANEL-ROBUST-2 (L-ROBUSTNESS + Gate 9 R2 strictness-leniency vector, +# dogfood42-hardening): where a boundary is advertised strict/canonical/exact or +# parses a number through a lenient primitive (int()/Number()/parseInt), the panel +# lens AND the canonical Gate 9 R2 row now require probing inputs that satisfy the +# rules' letter yet exceed the advertised surface (non-ASCII/Unicode-digit numerals, +# leading-sign/whitespace forms, valid-but-non-canonical 01h / 1d0h0m0s). The shared +# token 'strictness-leniency' is wired into the ac-evaluator body + its byte-identical +# -hi twin + the orchestration panel section + Gate 9 R2. 'strictness-leniency' is +# net-new (a revert flips each to FAIL). Closes the durfmt dogfood miss (a +# 'strict-canonical' parser accepted a full-width-digit token / +5 / 01h / 1d0h0m0s). +ev_strlen_acev=$(grep -cF 'strictness-leniency' "$ACEV_EV" || true) +ev_strlen_hi=$(grep -cF 'strictness-leniency' "$ACEVHI_EV" || true) +ev_strlen_orch=$(grep -cF 'strictness-leniency' "$ORCH_EV" || true) +ev_strlen_acqc=$(grep -cF 'strictness-leniency' "$ACQC_EV" || true) +ev_strlen_result="false" +if [ "$ev_strlen_acev" -ge 1 ] && [ "$ev_strlen_hi" -ge 1 ] && [ "$ev_strlen_orch" -ge 1 ] && [ "$ev_strlen_acqc" -ge 1 ]; then ev_strlen_result="true"; fi +assert_true \ + "CT-EV-PANEL-ROBUST-2 (L-ROBUSTNESS + Gate 9 R2 strictness-leniency vector): ac-evaluator ($ev_strlen_acev>=1) + -hi mirror ($ev_strlen_hi>=1) + orchestration ($ev_strlen_orch>=1) + Gate 9 R2 ($ev_strlen_acqc>=1)" \ + "$ev_strlen_result" + +# CT-DECONTAM-1 (product-instance recidivism guard, decontamination phase). This +# guard forbids product-INSTANCE tokens from leaking into the normative evaluation +# content (the rubric, the two ac-evaluator twins, the orchestration / authoring / +# evidence references, and the planner/implementer/test-writer/ticket-evaluator +# agents). Concrete product instances (e.g. a specific color-space call, a named +# third-party library, a one-off durfmt literal) belong in transient dogfood +# transcripts, NOT baked into the generic evaluation guidance, where they bias every +# future ticket toward the colour/duration domains they came from. The denylist is +# product instances ONLY: abstract failure-class names (prototype-pollution, +# strictness-leniency) and bare colour-space / gamut / constructor vocabulary are +# DELIBERATELY excluded so this guard never collides with the CT-pinned tokens that +# CT-EV-PANEL-ROBUST-1 / -2 and their kin assert MUST be present. RED-first: on the +# contaminated tree this FAILs with a nonzero hit count and names each file+token; +# it turns green only once the later de-contamination phases strip the instances. +# NOTE: test-skill-contracts.sh itself is intentionally NOT in the normative set — +# it legitimately carries every denylist literal below. +decontam_norm_files=( + "$REPO_DIR/skills/create-ticket/references/ac-quality-criteria.md" + "$REPO_DIR/agents/ac-evaluator.md" + "$REPO_DIR/agents/ac-evaluator-hi.md" + "$REPO_DIR/skills/impl/references/ac-evaluator-orchestration.md" + "$REPO_DIR/skills/impl/references/test-authoring-guidance.md" + "$REPO_DIR/skills/impl/references/evidence-channels.md" + "$REPO_DIR/agents/planner.md" + "$REPO_DIR/agents/implementer.md" + "$REPO_DIR/agents/test-writer.md" + "$REPO_DIR/agents/ticket-evaluator.md" + "$REPO_DIR/skills/impl/references/verification-depth.md" + "$REPO_DIR/skills/impl/references/tautological-assertion-rules.md" + "$REPO_DIR/skills/impl/references/independent-oracle-harness.md" +) +decontam_denylist=( + 'oklch(' + '1e400' + 'culori' + 'colorjs.io' + 'CSS-MINDE' + 'srgbToLinear' + '0.2126' + 'WCAG21' + 'clampChroma' + 'deltaE' + 'toGamut' + 'inGamut' + 'gamut_map' + 'parse_color' + 'U+FF11' + 'Arabic-Indic' + '01h' + '1d0h0m0s' + '__proto__' +) +decontam_total=0 +decontam_hits="" +for decontam_tok in "${decontam_denylist[@]}"; do + for decontam_f in "${decontam_norm_files[@]}"; do + [ -f "$decontam_f" ] || continue + decontam_c=$(grep -cF -- "$decontam_tok" "$decontam_f" 2>/dev/null || true) + decontam_c=${decontam_c:-0} + if [ "$decontam_c" -gt 0 ]; then + decontam_total=$((decontam_total + decontam_c)) + decontam_hits="${decontam_hits} + hit ($decontam_c) [$decontam_tok] in ${decontam_f#"$REPO_DIR"/}" + fi + done +done +decontam_result="false" +if [ "$decontam_total" -eq 0 ]; then decontam_result="true"; fi +if [ -n "$decontam_hits" ]; then + echo -e " CT-DECONTAM-1 product-instance leaks ($decontam_total total):${decontam_hits}" >&2 +fi +assert_true \ + "CT-DECONTAM-1 (product-instance recidivism guard): no product-INSTANCE tokens in the ${#decontam_norm_files[@]}-file normative set (total hits=$decontam_total, expected 0)" \ + "$decontam_result" + # CT-EV-GATE10-1 (Gate 10 peer-set uniformity, canonical + author + grader 3-file # symmetry, v8.4.0+): the new gate section exists in the canonical rubric AND the # planner self-audit names it AND the ticket-evaluator Gate-Results row names it. @@ -9884,6 +10047,35 @@ assert_true \ "CT-EV-GATE10-3 (Gate 10 kill switch wired): canonical gate ($ev_g10_3_acqc>=1) + policy doc ($ev_g10_3_apr>=1) + planner audit ($ev_g10_3_planner>=1) + policy template ($ev_g10_3_pt>=1)" \ "$ev_g10_3_result" +# CT-EV-SHARED-INPUT-XTICKET (cross-ticket shared-input-boundary signal + delegation-not-n/a +# sibling-guard clause, P-A). Both net-new tokens are HEAD=0 (RED-first). PART A pins the structured +# decomposer cross-ticket signal across producer + schema-SoT + forwarder; PART B pins the +# delegation-not-n/a clause across canonical + both byte-identical ac-evaluator twins + planner +# self-audit + ticket-evaluator grade-line. The decomposer emits the signal UNCONDITIONALLY +# (mirrors the existing unconditional peer_set: hint — decomposer.md reads no policy); downstream +# Gate 7/9 grading reuses constraints.failure_class_coverage (CT-EV-GATE9-3), so no new knob CT. +SHIN_DECOMP="$REPO_DIR/agents/decomposer.md" +SHIN_SPEC="$REPO_DIR/skills/create-ticket/references/spec-decomposer-input.md" +SHIN_SKILL="$REPO_DIR/skills/create-ticket/SKILL.md" +shin_a_decomp=$(grep -cF 'shared_input_boundary:' "$SHIN_DECOMP" || true) +shin_a_spec=$(grep -cF 'shared_input_boundary:' "$SHIN_SPEC" || true) +shin_a_skill=$(grep -cF 'shared_input_boundary:' "$SHIN_SKILL" || true) +shin_a_result="false" +if [ "$shin_a_decomp" -ge 1 ] && [ "$shin_a_spec" -ge 1 ] && [ "$shin_a_skill" -ge 1 ]; then shin_a_result="true"; fi +assert_true \ + "CT-EV-SHARED-INPUT-XTICKET PART A (decomposer cross-ticket shared_input_boundary signal: producer+schema+forwarder): decomposer ($shin_a_decomp>=1) + spec-decomposer-input ($shin_a_spec>=1) + create-ticket SKILL ($shin_a_skill>=1)" \ + "$shin_a_result" +shin_b_acqc=$(grep -ciF 'delegation is NOT an automatic n/a' "$ACQC_EV" || true) +shin_b_acev=$(grep -ciF 'delegation is NOT an automatic n/a' "$ACEV_EV" || true) +shin_b_acevhi=$(grep -ciF 'delegation is NOT an automatic n/a' "$ACEVHI_EV" || true) +shin_b_planner=$(grep -ciF 'delegation is NOT an automatic n/a' "$PLANNER_EV" || true) +shin_b_tev=$(grep -ciF 'delegation is NOT an automatic n/a' "$TEV_EV" || true) +shin_b_result="false" +if [ "$shin_b_acqc" -ge 1 ] && [ "$shin_b_acev" -ge 1 ] && [ "$shin_b_acevhi" -ge 1 ] && [ "$shin_b_planner" -ge 1 ] && [ "$shin_b_tev" -ge 1 ]; then shin_b_result="true"; fi +assert_true \ + "CT-EV-SHARED-INPUT-XTICKET PART B (delegation-not-n/a clause: canonical+both twins+planner+ticket-evaluator): acqc ($shin_b_acqc>=1) + ac-evaluator ($shin_b_acev>=1) + ac-evaluator-hi ($shin_b_acevhi>=1) + planner ($shin_b_planner>=1) + ticket-evaluator ($shin_b_tev>=1)" \ + "$shin_b_result" + # CT-EV-SELFDOC-1 (EC-SELFDOC channel + both failure modes, v8.4.0+). HEAD=0. ev_sd1_channel=$(grep -cF '**EC-SELFDOC**' "$ECH_EV" || true) ev_sd1_modeA=$(grep -cF 'description-vs-behavior drift' "$ECH_EV" || true) @@ -10066,6 +10258,77 @@ assert_true \ "CT-EV-MODEL-4 (criticality scalar): verification-depth 'criticality = blast_radius' ($evm4_vd>=1) + impl SKILL [CRITICALITY] stderr ($evm4_impl>=1)" \ "$evm4_result" +# ============================================================================= +# Category GEN-MODEL: Generator model policy (proposal 1'). +# sonnet_size_threshold retired; implementer = opus always; planner/decomposer = +# explicit `model: inherit`. Each assertion FAILs when the proposal-1' change is +# reverted (knob restored / inherit reverted to opus / size-routed description +# restored). +# ============================================================================= +GENM_PLANNER="$REPO_DIR/agents/planner.md" +GENM_DECOMP="$REPO_DIR/agents/decomposer.md" +GENM_IMPL_AGENT="$REPO_DIR/agents/implementer.md" + +# CT-GEN-MODEL-1: the sonnet_size_threshold knob is retired — zero reference files +# across skills/ and agents/ — AND the successor `Generator model policy` section +# exists in the canonical policy reference. +genm1_files=$( { grep -rln 'sonnet_size_threshold' "$REPO_DIR/skills" "$REPO_DIR/agents" 2>/dev/null || true; } | wc -l | tr -d ' ') +genm1_policy=$(grep -cF '## Generator model policy' "$APR_EVM" || true) +genm1_result="false" +if [ "$genm1_files" -eq 0 ] && [ "$genm1_policy" -ge 1 ]; then genm1_result="true"; fi +assert_true \ + "CT-GEN-MODEL-1 (sonnet_size_threshold retired): 0 ref files in skills/+agents/ (got $genm1_files) AND 'Generator model policy' section present ($genm1_policy>=1)" \ + "$genm1_result" + +# CT-GEN-MODEL-2: planner carries an EXPLICIT `model: inherit` (an omitted/implicit +# inherit is not accepted — self-documentation + CT verifiability). +genm2_count=$(grep -c '^model: inherit' "$GENM_PLANNER" || true) +genm2_result="false" +if [ "$genm2_count" -ge 1 ]; then genm2_result="true"; fi +assert_true \ + "CT-GEN-MODEL-2 (planner model: inherit explicit): agents/planner.md '^model: inherit' ($genm2_count>=1)" \ + "$genm2_result" + +# CT-GEN-MODEL-3: decomposer carries an EXPLICIT `model: inherit`. +genm3_count=$(grep -c '^model: inherit' "$GENM_DECOMP" || true) +genm3_result="false" +if [ "$genm3_count" -ge 1 ]; then genm3_result="true"; fi +assert_true \ + "CT-GEN-MODEL-3 (decomposer model: inherit explicit): agents/decomposer.md '^model: inherit' ($genm3_count>=1)" \ + "$genm3_result" + +# CT-GEN-MODEL-4: implementer stays pinned to `model: opus` AND no longer advertises +# the retired size-routed description ("Opus model for L/XL tickets, Sonnet for S/M"). +genm4_opus=$(grep -c '^model: opus' "$GENM_IMPL_AGENT" || true) +genm4_olddesc=$(grep -cF 'Opus model for L/XL tickets, Sonnet for S/M' "$GENM_IMPL_AGENT" || true) +genm4_result="false" +if [ "$genm4_opus" -ge 1 ] && [ "$genm4_olddesc" -eq 0 ]; then genm4_result="true"; fi +assert_true \ + "CT-GEN-MODEL-4 (implementer opus pinned, size-routed description removed): '^model: opus' ($genm4_opus>=1) AND old size-routing description absent ($genm4_olddesc==0)" \ + "$genm4_result" + +# ============================================================================= +# CT-RM-WRITERS (proposal 4 / ST-03): runtime_metrics writer enumeration sync. +# The writer list in skills/autopilot/references/state-file.md must name EVERY +# hook in the canonical `Sourced by:` header of hooks/lib/runtime-metrics.sh. A +# writer added to the lib header but not reflected in state-file.md FAILs (and +# the stale 2-of-6 enumeration this CT replaces would FAIL too). +# ============================================================================= +RMW_LIB="$REPO_DIR/hooks/lib/runtime-metrics.sh" +RMW_DOC="$REPO_DIR/skills/autopilot/references/state-file.md" +rmw_canonical=$( { sed -n '/^# Sourced by:/,/^# Public contract:/p' "$RMW_LIB" 2>/dev/null | grep -oE 'hooks/[a-z0-9-]+\.sh' || true; } | sort -u) +rmw_count=$(printf '%s\n' "$rmw_canonical" | grep -c '[^[:space:]]' || true) +rmw_missing="" +while IFS= read -r _rmw_h; do + [ -z "$_rmw_h" ] && continue + grep -qF "$_rmw_h" "$RMW_DOC" || rmw_missing="$rmw_missing $_rmw_h" +done <<< "$rmw_canonical" +rmw_result="false" +if [ "$rmw_count" -ge 6 ] && [ -z "$rmw_missing" ]; then rmw_result="true"; fi +assert_true \ + "CT-RM-WRITERS (runtime_metrics writer sync): state-file.md names all $rmw_count runtime-metrics.sh writers (missing:${rmw_missing:- none})" \ + "$rmw_result" + echo "" # --- Summary --- diff --git a/tests/test-state-parsers.sh b/tests/test-state-parsers.sh index 4fe3652..990618c 100755 --- a/tests/test-state-parsers.sh +++ b/tests/test-state-parsers.sh @@ -261,6 +261,56 @@ else fi fi +# AC-10 (proposal 3 / ST-01,ST-11): parse_active_steps is WI-3 schema-tolerant — +# it returns the SAME active (in_progress|pending) step set for the canonical-flat, +# inline-flow, and nested step shapes. The continuation driver +# (hooks/autopilot-continue.sh) relies on this to count unfinished steps and pick +# the next step across all three forms. Reverting proposal 3 removes the helper, so +# every assertion below fails (empty output). +PAS_FLAT="$SCAFFOLD_TMP/pas-flat.yaml" +PAS_FLOW="$SCAFFOLD_TMP/pas-flow.yaml" +PAS_NESTED="$SCAFFOLD_TMP/pas-nested.yaml" +cat > "$PAS_FLAT" <<'EOF' +tickets: + - logical_id: t1 + ticket_dir: 001-a + status: in_progress + steps: + create-ticket: completed + scout: in_progress + impl: pending + ship: pending +EOF +cat > "$PAS_FLOW" <<'EOF' +tickets: + - logical_id: t1 + ticket_dir: 001-a + status: in_progress + steps: {create-ticket: completed, scout: in_progress, impl: pending, ship: pending} +EOF +cat > "$PAS_NESTED" <<'EOF' +tickets: + - logical_id: t1 + ticket_dir: 001-a + status: in_progress + steps: + create-ticket: + status: completed + scout: + status: in_progress + impl: + status: pending + ship: + status: pending +EOF +PAS_EXPECT="scout:in_progress,impl:pending,ship:pending" +pas_flat="$(parse_active_steps "$PAS_FLAT" 2>/dev/null | tr '\n' ',' | sed 's/,$//')" || pas_flat="" +pas_flow="$(parse_active_steps "$PAS_FLOW" 2>/dev/null | tr '\n' ',' | sed 's/,$//')" || pas_flow="" +pas_nested="$(parse_active_steps "$PAS_NESTED" 2>/dev/null | tr '\n' ',' | sed 's/,$//')" || pas_nested="" +assert_eq "AC-10a: parse_active_steps flat form -> active steps" "$PAS_EXPECT" "$pas_flat" +assert_eq "AC-10b: parse_active_steps inline-flow form -> active steps" "$PAS_EXPECT" "$pas_flow" +assert_eq "AC-10c: parse_active_steps nested form -> active steps" "$PAS_EXPECT" "$pas_nested" + echo "" echo "===============================" echo -e "Total: $TESTS_TOTAL | ${GREEN}Passed: $TESTS_PASSED${NC} | ${RED}Failed: $TESTS_FAILED${NC}" From 55631f7300a673723f5b8c90b82b241cc6d8a458 Mon Sep 17 00:00:00 2001 From: aimsise Date: Wed, 17 Jun 2026 02:00:18 +0900 Subject: [PATCH 02/15] fix(test): make NAC #4 framework-token scan fence-aware (AASC prereq) NAC #4 in tests/test-ac-evaluator-static-rules.sh asserts that tautological- assertion-rules.md names no test framework "outside example blocks", but the implementation grepped the WHOLE file (fence-unaware), so a framework token inside a fenced worked example would false-trip it. Align the implementation with its own comment by filtering fenced code blocks before the count, transcribing the proven three-backtick toggle awk from hooks/pre-write-safety.sh:51-64. Behaviour-identical on the current tree (the rules file has 0 framework tokens and 0 fences, so the count stays 0 -> PASS). RED-first demo confirmed: on a fixture with one prose token + one FENCED token, the old whole-file grep counts 2 (false trip) while the fence-aware filter counts 1 (prose only). Suite 21/21, ShellCheck --severity=warning rc=0. Prerequisite for AASC: a future accept-set worked example carrying a runner token must not RED-fail this guard. Co-Authored-By: Claude Opus 4.8 (1M context) --- tests/test-ac-evaluator-static-rules.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test-ac-evaluator-static-rules.sh b/tests/test-ac-evaluator-static-rules.sh index f741ecb..9428552 100755 --- a/tests/test-ac-evaluator-static-rules.sh +++ b/tests/test-ac-evaluator-static-rules.sh @@ -97,9 +97,11 @@ else TESTS_FAILED=$((TESTS_FAILED + 1)) fi -# NAC #4: language/framework names must not appear outside example blocks. +# NAC #4: language/framework names must not appear in PROSE (outside fenced +# example blocks). Fenced code blocks are exempt — a worked example may legitimately +# carry a runner token — mirroring the fence-aware scan in hooks/pre-write-safety.sh. TESTS_TOTAL=$((TESTS_TOTAL + 1)) -NAC4_HITS=$(grep -ciE 'vitest|jest|pytest|junit' "$RULES_FILE" || true) +NAC4_HITS=$(awk '/^[[:space:]]*```/{f=1-f;next} !f{print}' "$RULES_FILE" | grep -ciE 'vitest|jest|pytest|junit' || true) if [ "$NAC4_HITS" -eq 0 ]; then echo -e " ${GREEN}PASS${NC} NAC #4: rules file is framework-agnostic" TESTS_PASSED=$((TESTS_PASSED + 1)) From 426791300f29ddfa57610498fb9578e93da366f5 Mon Sep 17 00:00:00 2001 From: aimsise Date: Wed, 17 Jun 2026 02:06:50 +0900 Subject: [PATCH 03/15] fix(ac-evaluator): scratch carve-out covers behavioral evidence probes (AASC prereq) The scratch-carve-out note said its "single exception ... for a computational AC", but point 5 of the same section ALREADY directs a behavioral, time-bounded watchdog probe of an external-input boundary via the .simple-workflow/scratch/ carve-out (and the EC-SELFDOC real-build probe likewise). That is a pre-existing internal inconsistency, independent of any new mechanism. Reconcile it: the carve-out permits EVIDENCE-GATHERING on already-built behaviour (computational oracle probe AND the behavioral watchdog / EC-SELFDOC probes this section already directs), NEVER a substitute for missing test coverage (the :199 ban is preserved in intent). Deliberately scoped: this names NO accept-set / complement-sweep (that is the gated AASC mechanism, deferred until the charter F-4 discriminating dogfood passes). Applied BYTE-IDENTICALLY to both ac-evaluator twins. New RED-first CT-EV-SCRATCH-EVIDENCE pins the clarification in both twins (token HEAD=0 before this change). Verification: test-skill-contracts 839/839, ac-evaluator twins byte-identical (CT-EV-MODEL-1 + cmp), CT-DECONTAM-1 green, ShellCheck --severity=warning rc=0. Co-Authored-By: Claude Opus 4.8 (1M context) --- agents/ac-evaluator-hi.md | 2 +- agents/ac-evaluator.md | 2 +- tests/test-skill-contracts.sh | 13 +++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/agents/ac-evaluator-hi.md b/agents/ac-evaluator-hi.md index c138d65..59a5b2e 100644 --- a/agents/ac-evaluator-hi.md +++ b/agents/ac-evaluator-hi.md @@ -196,7 +196,7 @@ Acceptable AC verification methods (in priority order): When a runtime or visual AC is in scope AND a browser-automation utility skill is available, you MUST gather live evidence via method 6 — code inspection (methods 3-4) alone is NOT sufficient evidence to PASS such an AC. If no browser-automation skill is available, fall back to code inspection and reflect the missing live verification in the Caveats field (see PASS-WITH-CAVEATS). -If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. (The single exception is the oracle-probe carve-out above: for a computational AC you SHOULD write an independent-oracle probe under `.simple-workflow/scratch/` to derive the expected value — that is independent verification of an already-built behaviour, not a coverage workaround.) +If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. The carve-out permits EVIDENCE-GATHERING on already-built behaviour, NEVER a substitute for missing coverage: (a) for a computational AC, an independent-oracle probe under `.simple-workflow/scratch/` that derives the expected value from an oracle independent of the code; and (b) the **behavioral evidence probes** this section already directs — the time-bounded watchdog probe of an external-input boundary (point 5 below) and an EC-SELFDOC real-build / advertised-boundary probe — which likewise run under `.simple-workflow/scratch/` as independent verification of an already-built behaviour, not coverage workarounds. **Exception**: If a truly temporary file is unavoidable, write to `os.tmpdir()` (Node) / `$TMPDIR` (POSIX) and clean up via the script's own `finally` block — NEVER `rm` as a separate shell command after the run (rm may be denied by permission gating, leaving the file behind). For oracle probes specifically, prefer the `.simple-workflow/scratch/` carve-out above; this `os.tmpdir()` path is the general fallback for any other unavoidable temp file. diff --git a/agents/ac-evaluator.md b/agents/ac-evaluator.md index 53196ee..3431ec1 100644 --- a/agents/ac-evaluator.md +++ b/agents/ac-evaluator.md @@ -196,7 +196,7 @@ Acceptable AC verification methods (in priority order): When a runtime or visual AC is in scope AND a browser-automation utility skill is available, you MUST gather live evidence via method 6 — code inspection (methods 3-4) alone is NOT sufficient evidence to PASS such an AC. If no browser-automation skill is available, fall back to code inspection and reflect the missing live verification in the Caveats field (see PASS-WITH-CAVEATS). -If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. (The single exception is the oracle-probe carve-out above: for a computational AC you SHOULD write an independent-oracle probe under `.simple-workflow/scratch/` to derive the expected value — that is independent verification of an already-built behaviour, not a coverage workaround.) +If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. The carve-out permits EVIDENCE-GATHERING on already-built behaviour, NEVER a substitute for missing coverage: (a) for a computational AC, an independent-oracle probe under `.simple-workflow/scratch/` that derives the expected value from an oracle independent of the code; and (b) the **behavioral evidence probes** this section already directs — the time-bounded watchdog probe of an external-input boundary (point 5 below) and an EC-SELFDOC real-build / advertised-boundary probe — which likewise run under `.simple-workflow/scratch/` as independent verification of an already-built behaviour, not coverage workarounds. **Exception**: If a truly temporary file is unavoidable, write to `os.tmpdir()` (Node) / `$TMPDIR` (POSIX) and clean up via the script's own `finally` block — NEVER `rm` as a separate shell command after the run (rm may be denied by permission gating, leaving the file behind). For oracle probes specifically, prefer the `.simple-workflow/scratch/` carve-out above; this `os.tmpdir()` path is the general fallback for any other unavoidable temp file. diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index 944df18..9ed433f 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -10076,6 +10076,19 @@ assert_true \ "CT-EV-SHARED-INPUT-XTICKET PART B (delegation-not-n/a clause: canonical+both twins+planner+ticket-evaluator): acqc ($shin_b_acqc>=1) + ac-evaluator ($shin_b_acev>=1) + ac-evaluator-hi ($shin_b_acevhi>=1) + planner ($shin_b_planner>=1) + ticket-evaluator ($shin_b_tev>=1)" \ "$shin_b_result" +# CT-EV-SCRATCH-EVIDENCE (behavioral evidence-probe scratch carve-out clarification, +# AASC prereq). Reconciles the :199 "single exception ... computational AC" wording with +# point 5's already-directed behavioral watchdog probe (an existing inconsistency); names +# NO accept-set sweep (that is the gated AASC mechanism). Net-new token HEAD=0; byte-identical +# in both twins (CT-EV-MODEL-1 covers the identity). +scev_acev=$(grep -ciF 'behavioral evidence probe' "$ACEV_EV" || true) +scev_acevhi=$(grep -ciF 'behavioral evidence probe' "$ACEVHI_EV" || true) +scev_result="false" +if [ "$scev_acev" -ge 1 ] && [ "$scev_acevhi" -ge 1 ]; then scev_result="true"; fi +assert_true \ + "CT-EV-SCRATCH-EVIDENCE (behavioral evidence-probe carve-out clarification, both twins): ac-evaluator ($scev_acev>=1) + ac-evaluator-hi ($scev_acevhi>=1)" \ + "$scev_result" + # CT-EV-SELFDOC-1 (EC-SELFDOC channel + both failure modes, v8.4.0+). HEAD=0. ev_sd1_channel=$(grep -cF '**EC-SELFDOC**' "$ECH_EV" || true) ev_sd1_modeA=$(grep -cF 'description-vs-behavior drift' "$ECH_EV" || true) From de6818ee42b7469e9e4ff83c3180a399684db513 Mon Sep 17 00:00:00 2001 From: aimsise Date: Wed, 17 Jun 2026 02:38:17 +0900 Subject: [PATCH 04/15] docs(design-oracle): commit AASC accept-set-conformance proof prototype (charter F-1) Preserve the charter section I probe as a durable, runnable design-oracle under design-oracles/aasc-accept-set/ (it previously lived only in gitignored scratch). It pairs an independent hand-coded spec oracle with a property-generated complement corpus (the Unicode decimal-digit codepoints that are NOT ASCII, BMP + astral, enumerated by Unicode property so the generator names no script) and diffs each implementation black-box against the oracle. Reproduced: node probe.js -> buggy caught, correct clean (astral 0 is correct, the JS native parser is ASCII-only); python3 probe.py -> buggy leaks the full Unicode-Nd alphabet incl ~390 astral codepoints caught by construction, correct clean. Source names no script and carries no product-instance denylist token. This is a PROOF ARTIFACT, not normative plugin content: the AASC mechanism is NOT wired into the harness and its implementation stays gated on the charter section F-4 discriminating-subject live dogfood. The directory is run by no test suite or CI; test-path-consistency 144/144 and test-skill-contracts 839/839 stay green with it present. The illustrative boundary (strict unsigned decimal octet) is illustrative only. Co-Authored-By: Claude Opus 4.8 (1M context) --- design-oracles/aasc-accept-set/README.md | 48 ++++++++++++++ design-oracles/aasc-accept-set/probe.js | 73 +++++++++++++++++++++ design-oracles/aasc-accept-set/probe.py | 82 ++++++++++++++++++++++++ 3 files changed, 203 insertions(+) create mode 100644 design-oracles/aasc-accept-set/README.md create mode 100644 design-oracles/aasc-accept-set/probe.js create mode 100644 design-oracles/aasc-accept-set/probe.py diff --git a/design-oracles/aasc-accept-set/README.md b/design-oracles/aasc-accept-set/README.md new file mode 100644 index 0000000..574563d --- /dev/null +++ b/design-oracles/aasc-accept-set/README.md @@ -0,0 +1,48 @@ +# AASC accept-set-conformance — design-oracle (proof prototype) + +This directory is a **committed design-oracle**: a runnable proof that the +**Advertised-Accept-Set Conformance (AASC)** mechanism is language-agnostic, +constructive, and false-positive-free. It satisfies the charter `§F-1` evidence +item ("commit the prototype as a repo design-oracle"). It is a **proof artifact, +not normative plugin content** — the AASC mechanism itself is NOT yet wired into +the harness; its implementation is gated on the charter `§F-4` discriminating-subject +live dogfood. Nothing here is run by the test suites or by CI. + +## What it proves + +The probes pair an **independent, hand-coded spec oracle** (accept/reject derived +from the advertised grammar, never importing the implementation) with a +**property-generated complement corpus**: the generator enumerates the Unicode +decimal-digit codepoints that are NOT ASCII (the `\p{Nd}` / Unicode-category +complement of `U+0030..U+0039`), across the BMP **and the astral planes**, **naming +no script in code**. It then runs each implementation **black-box** and diffs every +verdict against the oracle, with accepted-domain idempotence. + +The boundary under test (a strict unsigned decimal octet `[0,255]`) is **illustrative +only** — illustrative on both the domain axis and the language axis; the mechanism is +the point, not the example. + +## Results (reproducible) + +- `node probe.js` — the buggy "looks-numeric-and-in-range" implementation is caught + (its leaks are structural / non-canonical: leading-zero, whitespace, hex, scientific + notation, empty); `astral among catches: 0` is **correct** here, because the JS + native numeric parser is ASCII-only and so leaks no Unicode alphabet. The correct + implementation has **zero** oracle-disagreements (no false-positive storm). +- `python3 probe.py` — the buggy `str.isdigit()`-then-`int()` implementation leaks the + **full Unicode-Nd alphabet including ~390 astral codepoints** (the exact class a prior + dogfood shipped), **caught by construction** with the generator naming no script. The + correct implementation has **zero** oracle-disagreements. + +The same methodology (independent oracle × property-generated complement corpus) +catches each language's *actual* leak class — structural for the ASCII-native parser, +input-alphabet for the Unicode-permissive parser — with one oracle and no false +positives. That is the language-agnostic, constructive, false-positive-free property +AASC rests on. + +## Run + +``` +node design-oracles/aasc-accept-set/probe.js +python3 design-oracles/aasc-accept-set/probe.py +``` diff --git a/design-oracles/aasc-accept-set/probe.js b/design-oracles/aasc-accept-set/probe.js new file mode 100644 index 0000000..02a9581 --- /dev/null +++ b/design-oracles/aasc-accept-set/probe.js @@ -0,0 +1,73 @@ +'use strict'; +// AASC confidence probe (JS). Boundary: strict unsigned decimal octet [0,255]. +// Advertised accept-set: ASCII digits only, canonical (no leading zero), +// no sign / whitespace / radix prefix, value 0..255. +// The oracle is SPEC-DERIVED and INDEPENDENT of both impls: it does a hand +// char-code check and never calls Number()/parseInt — so it cannot share an +// impl's parsing convention. + +// ---- Independent spec oracle (no library, no impl reuse) ---- +function oracleAccepts(s) { + if (typeof s !== 'string' || s.length === 0) return false; + for (const ch of s) { // for..of iterates by code point (astral-safe) + const cp = ch.codePointAt(0); + if (cp < 0x30 || cp > 0x39) return false; // ASCII digits only + } + if (s.length > 1 && s[0] === '0') return false; // canonical: no leading zero + let v = 0; + for (const ch of s) { v = v * 10 + (ch.codePointAt(0) - 0x30); if (v > 255) return false; } + return true; +} + +// ---- Impls under test ---- +function implCorrect(s) { + return /^(0|[1-9][0-9]{0,2})$/.test(s) && Number(s) <= 255; +} +function implBuggy(s) { // "looks numeric and in range" shortcut + const n = Number(s); + return Number.isInteger(n) && n >= 0 && n <= 255; +} + +// ---- GENERATIVE corpus (grammar/property-driven; NAMES NO SCRIPT) ---- +const corpus = []; +const add = (s) => corpus.push(s); +['0','1','9','10','42','99','100','199','255'].forEach(add); // ascii accepts +['256','300','999','00','01','0255','+1','-1','1.0','1e2','0x1f','0b1','1_0','',' 12','12 ',' ','\t9'].forEach(add); // ascii rejects +// Unicode decimal-digit COMPLEMENT sweep: every codepoint that is \p{Nd} +// but NOT ASCII 0-9. Enumerated by PROPERTY — recalls no script name. +let ndBmp = 0, ndAstral = 0; +for (let cp = 0; cp <= 0x10FFFF; cp++) { + if (cp >= 0xD800 && cp <= 0xDFFF) continue; // lone surrogates + if (cp >= 0x30 && cp <= 0x39) continue; // exclude ASCII + const ch = String.fromCodePoint(cp); + if (/\p{Nd}/u.test(ch)) { add(ch); if (cp > 0xFFFF) ndAstral++; else ndBmp++; } +} +['²','Ⅰ','½','〇'].forEach(add); // non-Nd numeric lookalikes (must reject) + +// ---- Run + diff vs oracle ---- +function run(impl) { + const fa = [], fr = [], threw = []; + for (const s of corpus) { + const want = oracleAccepts(s); + let got; + try { got = impl(s); } catch (_) { threw.push(s); continue; } + if (got && !want) fa.push(s); + if (!got && want) fr.push(s); + } + return { fa, fr, threw }; +} +const hex = (s) => [...s].map(c => 'U+' + c.codePointAt(0).toString(16).toUpperCase().padStart(4, '0')).join(''); +const sample = (a, n) => a.slice(0, n).map(s => JSON.stringify(s) + '(' + hex(s) + ')').join(', '); + +const rb = run(implBuggy), rc = run(implCorrect); +console.log('== JS probe :: boundary = strict unsigned decimal octet [0,255] =='); +console.log('corpus size:', corpus.length, '| nd-nonascii BMP:', ndBmp, 'astral:', ndAstral); +console.log('-- BUGGY impl (Number()+range shortcut) --'); +console.log(' false-accepts (leak caught by oracle):', rb.fa.length); +console.log(' sample:', sample(rb.fa, 14)); +const buggyAstral = rb.fa.filter(s => [...s].some(c => c.codePointAt(0) > 0xFFFF)); +console.log(' astral among catches:', buggyAstral.length); +console.log('-- CORRECT impl (regex+value) --'); +const dis = rc.fa.length + rc.fr.length + rc.threw.length; +console.log(' disagreements with oracle:', dis, '->', dis === 0 ? 'false-positive-storm ABSENT (0)' : 'STORM PRESENT'); +console.log('VERDICT JS: buggy caught =', rb.fa.length > 0, '| correct clean =', dis === 0); diff --git a/design-oracles/aasc-accept-set/probe.py b/design-oracles/aasc-accept-set/probe.py new file mode 100644 index 0000000..2e8c128 --- /dev/null +++ b/design-oracles/aasc-accept-set/probe.py @@ -0,0 +1,82 @@ +# AASC confidence probe (Python). Same boundary: strict unsigned decimal octet [0,255]. +# Oracle is SPEC-DERIVED and INDEPENDENT of both impls: hand char-code check, +# never calls int()/str.isdigit(). +import unicodedata, json + +def oracle_accepts(s): + if not isinstance(s, str) or len(s) == 0: + return False + for ch in s: + if ord(ch) < 0x30 or ord(ch) > 0x39: # ASCII digits only + return False + if len(s) > 1 and s[0] == '0': # canonical: no leading zero + return False + v = 0 + for ch in s: + v = v * 10 + (ord(ch) - 0x30) + if v > 255: + return False + return True + +import re +_pat = re.compile(r'(0|[1-9][0-9]{0,2})') # ASCII literals -> ASCII-only by construction +def impl_correct(s): + return _pat.fullmatch(s) is not None and int(s) <= 255 + +def impl_buggy(s): # "looks like digits and in range" shortcut + return s.isdigit() and 0 <= int(s) <= 255 + +# GENERATIVE corpus (property-driven; names no script) +corpus = [] +for s in ['0','1','9','10','42','99','100','199','255']: + corpus.append(s) +for s in ['256','300','999','00','01','0255','+1','-1','1.0','1e2','0x1f','',' ',' 12','12 ','\t9']: + corpus.append(s) +nd_bmp = nd_astral = 0 +for cp in range(0x110000): + if 0x30 <= cp <= 0x39 or 0xD800 <= cp <= 0xDFFF: + continue + ch = chr(cp) + if unicodedata.category(ch) == 'Nd': # Unicode decimal digit, non-ASCII + corpus.append(ch) + if cp > 0xFFFF: + nd_astral += 1 + else: + nd_bmp += 1 +for s in ['²', 'Ⅰ', '½', '〇']: # non-Nd numeric lookalikes + corpus.append(s) + +def run(impl): + fa, fr, threw = [], [], [] + for s in corpus: + want = oracle_accepts(s) + try: + got = impl(s) + except Exception: + threw.append(s) + continue + if got and not want: + fa.append(s) + if (not got) and want: + fr.append(s) + return fa, fr, threw + +def hexs(s): + return ''.join('U+%04X' % ord(c) for c in s) +def sample(a, n): + return ', '.join(json.dumps(x) + '(' + hexs(x) + ')' for x in a[:n]) + +fb, frb, tb = run(impl_buggy) +fc, frc, tc = run(impl_correct) +print('== PY probe :: boundary = strict unsigned decimal octet [0,255] ==') +print('corpus size:', len(corpus), '| nd-nonascii BMP:', nd_bmp, 'astral:', nd_astral) +print('-- BUGGY impl (str.isdigit()+int()+range) --') +print(' false-accepts (leak caught by oracle):', len(fb)) +print(' sample:', sample(fb, 14)) +astral_caught = [s for s in fb if any(ord(c) > 0xFFFF for c in s)] +print(' ASTRAL among catches:', len(astral_caught), ('(e.g. ' + sample(astral_caught, 3) + ')') if astral_caught else '') +print(' threw (robustness defect, e.g. int() on digit-ish non-Nd):', len(tb), ('(e.g. ' + sample(tb, 4) + ')') if tb else '') +print('-- CORRECT impl (ascii regex + value) --') +dis = len(fc) + len(frc) + len(tc) +print(' disagreements with oracle:', dis, '->', 'false-positive-storm ABSENT (0)' if dis == 0 else 'STORM PRESENT') +print('VERDICT PY: buggy caught =', len(fb) > 0, '| ASTRAL leak caught =', len(astral_caught) > 0, '| correct clean =', dis == 0) From b8cb92839f2bcdbe8d1eb74a1bc30781d813a465 Mon Sep 17 00:00:00 2001 From: aimsise Date: Wed, 17 Jun 2026 16:42:13 +0900 Subject: [PATCH 05/15] docs(readme): frame the harness as inner-loop loop engineering Add loop-engineering framing in three README locations without growing the body or naming skills in the top blurb: - opening blurb: the Harness brings loop engineering to the development lifecycle via a closed inner loop (act -> verify -> correct -> continue) bounded by contract stopping conditions - Usage > Execution chains: annotate the autopilot per-ticket loop in patterns 2 and 3 with 'loop engineering fires'; the all-manual pattern 1 stays unannotated because the human drives that loop there - Why simple-workflow?: tie the three pillars to the inner loop of loop engineering and the engineering around it (no new bullet) Docs-only; path-consistency 144/144 green. Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 91a15b8..ff1d5de 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The [Claude Code](https://docs.anthropic.com/en/docs/claude-code) plugin for **end-to-end AI development workflows**. From idea to pull request: structured interview, codebase investigation, multi-agent implementation, security audit, code review, and PR creation, all automated. -Built on a **Harness for long-running AI agents** with strict context management, information firewalls, and a cross-session knowledge base that improves accuracy with every completed ticket. +Built on a **Harness for long-running AI agents** that brings *loop engineering* to the development lifecycle — a rigorous, closed *inner loop* (act → verify → correct → continue) bounded by contract stopping conditions — with strict context management, information firewalls, and a cross-session knowledge base that improves accuracy with every completed ticket. ## Prerequisites @@ -77,12 +77,12 @@ Three typical execution patterns: # re-run /create-ticket so each ticket dir receives autopilot-policy.yaml (re-propagation): /create-ticket brief=.simple-workflow/backlog/briefs/active//brief.md /autopilot -# autopilot then loops: /scout → /impl → /ship per ticket → PR +# autopilot then loops: /scout → /impl → /ship per ticket → PR ← loop engineering fires (the closed inner loop self-drives) # (running /autopilot directly on a chain=off brief stops with a re-propagation directive) # 3. Full automation (one command): /brief -# brief chains: /create-ticket → /autopilot → (per ticket: /scout → /impl → /ship) → PR +# brief chains: /create-ticket → /autopilot → (per ticket: /scout → /impl → /ship) → PR ← loop engineering fires once /autopilot takes over ``` > **Caveat — full automation works best on focused, well-scoped ideas.** On overly broad or ambiguous input, the model can break output contracts, fabricate intermediate state, and continue past failures without surfacing them. Full automation has fewer human-in-the-loop checkpoints than the brief-assisted manual flow, so this kind of misbehaviour is easier to miss. For large or exploratory work, prefer `chain=off` (you inspect artifacts at each step) or split the work into smaller, focused briefs. @@ -93,7 +93,7 @@ Tickets carry a `### Capabilities` section that records which user Skills and MC ## Why simple-workflow? -simple-workflow stands on three pillars: +simple-workflow stands on three pillars — together they form the closed *inner loop* of *loop engineering* and the engineering around it that makes the loop trustworthy enough to run unattended: - **Harness Engineering**: an asymmetric information firewall between code authors and code judges (the Generator-Evaluator pattern), ticket-confined artifacts, and safe-clear `[SW-CHECKPOINT]` markers are enforced *structurally* — by lifecycle hooks, fresh sub-agent contexts, and on-disk artifacts that hold regardless of model behavior. The bounded sub-agent return budget (< 500 tokens) is a *prompt-level contract* pinned by contract tests, not a runtime-truncation guarantee - **Context Conservation**: the context window is treated as a consumable resource — sub-agents return < 500-token summaries, artifacts live on disk, and state survives compaction From 5e23e5b595b05f6053e6a318a218969a0c7ef760 Mon Sep 17 00:00:00 2001 From: aimsise Date: Wed, 17 Jun 2026 19:53:08 +0900 Subject: [PATCH 06/15] feat(eval): AASC accept-set conformance executed sweep (STEP 5) Wire Advertised-Accept-Set Conformance into the ac-evaluator: when a boundary's contract advertises strict/canonical/lossless/limit (or a shared-input-class sibling exists), the evaluator EXECUTES a generative grammar-complement sweep in scratch against an independent hand-coded oracle, rather than only reasoning about the accept set. Per the charter's innovation-theater analysis, the load-bearing addition is the executed act, not more prose contract. Load-bearing edits (twin/sibling byte-identical): - ac-evaluator{,-hi}.md L-ROBUSTNESS lens: EXECUTE mandate + Grammar Card (A/U/W/K) + four metamorphic relations (MR-FINITE/ALPHABET/CANONICAL/KEYFAITH, MR-ALPHABET enumerating the Unicode decimal-digit property complement naming no script) + two-tier oracle-authoritative FAIL gating (no false-positive storm) + always-on + no-runnable-artifact caveat arm. - ac-evaluator{,-hi}.md scratch carve-out: admit the sweep as a behavioral evidence probe. - ac-evaluator{,-hi}.md persisted observability: a "## Accept-set sweep" section in the terminal-rewrite report body (per-boundary triggered/ran/astral/ divergences/authoritative lines) so non-execution is falsifiable. - implementer.md / test-writer.md: producer-side commit-on-leak retained corpus (a fixed rejection characterization test, conditioned on a sweep-found leak). Scaffold: new skills/impl/references/accept-set-conformance-harness.md (copyable shape, non-product worked example, illustrative-only); EC-METAMORPHIC in evidence-channels.md; a test-authoring-guidance cross-link. Tests: CT-AASC-1/2/3/5 (RED-first proven), new doc added as the 14th CT-DECONTAM-1 normative-set file. test-skill-contracts 843/843, path-consistency 144/144, twins byte-identical, ShellCheck clean, CT-DECONTAM-1 zero product-instance hits. Efficacy (dogfood46, record-locator library, 3 siblings, patched tree): QUALIFIED PASS. Self-elicitation is REAL (not theater) -- an evaluator actually executed a property-enumerated BMP Nd-complement sweep (corpus-size corroborated by the tool call and an independent oracle); the committed test layer now locks in the Unicode-digit reject class (a one-character [0-9]->\d / isdigit regression makes the committed suite go RED, the opposite of the prior baseline); product correct with zero new bugs. meet-or-beat achieved over the baseline. Known iterate targets (follow-up hardening): execution is non-uniform (only one of three siblings ran a genuine property-enumerated sweep; one hand-picked a small sample, one stood the sweep down on delegation grounds), the astral planes were not swept, and the stderr observability twin did not fire. The kill switch (constraints.accept_set_conformance) is intentionally deferred to the hardening pass so this efficacy delta stays cleanly attributable; the absent-field default keeps the mechanism active. Co-Authored-By: Claude Opus 4.8 (1M context) --- agents/ac-evaluator-hi.md | 56 ++++- agents/ac-evaluator.md | 56 ++++- agents/implementer.md | 2 +- agents/test-writer.md | 2 +- .../accept-set-conformance-harness.md | 199 ++++++++++++++++++ skills/impl/references/evidence-channels.md | 14 ++ .../references/test-authoring-guidance.md | 6 +- tests/test-skill-contracts.sh | 67 ++++++ 8 files changed, 395 insertions(+), 7 deletions(-) create mode 100644 skills/impl/references/accept-set-conformance-harness.md diff --git a/agents/ac-evaluator-hi.md b/agents/ac-evaluator-hi.md index 59a5b2e..1095e53 100644 --- a/agents/ac-evaluator-hi.md +++ b/agents/ac-evaluator-hi.md @@ -196,7 +196,7 @@ Acceptable AC verification methods (in priority order): When a runtime or visual AC is in scope AND a browser-automation utility skill is available, you MUST gather live evidence via method 6 — code inspection (methods 3-4) alone is NOT sufficient evidence to PASS such an AC. If no browser-automation skill is available, fall back to code inspection and reflect the missing live verification in the Caveats field (see PASS-WITH-CAVEATS). -If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. The carve-out permits EVIDENCE-GATHERING on already-built behaviour, NEVER a substitute for missing coverage: (a) for a computational AC, an independent-oracle probe under `.simple-workflow/scratch/` that derives the expected value from an oracle independent of the code; and (b) the **behavioral evidence probes** this section already directs — the time-bounded watchdog probe of an external-input boundary (point 5 below) and an EC-SELFDOC real-build / advertised-boundary probe — which likewise run under `.simple-workflow/scratch/` as independent verification of an already-built behaviour, not coverage workarounds. +If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. The carve-out permits EVIDENCE-GATHERING on already-built behaviour, NEVER a substitute for missing coverage: (a) for a computational AC, an independent-oracle probe under `.simple-workflow/scratch/` that derives the expected value from an oracle independent of the code; and (b) the **behavioral evidence probes** this section already directs — the time-bounded watchdog probe of an external-input boundary (point 5 below) and an EC-SELFDOC real-build / advertised-boundary probe — which likewise run under `.simple-workflow/scratch/` as independent verification of an already-built behaviour, not coverage workarounds; and (c) the **accept-set conformance sweep** — when a boundary advertises strict / canonical / lossless / limit OR a same-input-class sibling exists, an EXECUTED generative grammar-complement sweep (the four metamorphic relations of `## Failure-class panel` L-ROBUSTNESS, per `skills/impl/references/accept-set-conformance-harness.md`) whose accept-set is diffed black-box against an independent hand-coded spec oracle, run under `.simple-workflow/scratch/` and discarded after the round. This sweep is EVIDENCE-GATHERING on the already-built validator, NOT a substitute for missing PRODUCT test coverage: when the sweep finds an accept-set leak, the durable fix is producer-side — the next implementer / test-writer round commits a fixed rejection characterization test to the PRODUCT tests (your scratch corpus is ephemeral and never committed); you record the leaking input class in your Feedback so that round can pin it. **Exception**: If a truly temporary file is unavoidable, write to `os.tmpdir()` (Node) / `$TMPDIR` (POSIX) and clean up via the script's own `finally` block — NEVER `rm` as a separate shell command after the run (rm may be denied by permission gating, leaving the file behind). For oracle probes specifically, prefer the `.simple-workflow/scratch/` carve-out above; this `os.tmpdir()` path is the general fallback for any other unavoidable temp file. @@ -410,6 +410,58 @@ single pass under-checks: emit — and FAIL the unit when its enforced boundary is wider than the strictness it advertises (accepted silently AND not normalized-idempotent), not only when a value is corrupted. + **Accept-set conformance (EXECUTE, always-on, `accept_set_conformance`)**: + this strictness clause is satisfied by READING, and live dogfoods leaked + despite it — so when a boundary's contract lexically advertises **strict / + canonical / lossless / limit** (word-existence in the AC, its Implementation + Notes, the docstring, or `--help`) OR a sibling accepts the **same input + class** (the `shared_input_boundary` peer signal forwarded by the planner / + ticket-evaluator), you MUST NOT merely reason about the accept set — you MUST + **EXECUTE** a generative grammar-complement sweep in `.simple-workflow/scratch/` + (the behavioral evidence probe authorized at `## AC Verification Method`, + clause (c)) and diff its accept-set against an **independent hand-coded spec + oracle** you write from the spec, never by calling the unit's own validator / + `int()` / `Number()` / `isdigit()`. Derive a per-boundary **Grammar Card** — + `A` = the advertised input ALPHABET, `U` = any Unicode normalization / + decimal-digit transform, `W` = the canonical WRITER form, `K` = any KEYED + structure built from untrusted input — and run the four machine-generated + metamorphic relations black-box under a watchdog with a `mulberry32`-seeded + corpus (shape + worked example: + `skills/impl/references/accept-set-conformance-harness.md`): **MR-FINITE** (a + parse-accepted input whose conversion overflows to non-finite / out-of-range), + **MR-ALPHABET** (enumerate the Unicode decimal-digit property complement across + the BMP AND the astral planes — your generator names NO script and hard-codes + NO codepoint list; it iterates the codepoint space and selects by the + decimal-digit property, so every script's digits are covered for ALL inputs), + **MR-CANONICAL** (a structurally-valid-but-non-canonical form the writer would + never emit must be rejected or normalized-idempotent), and **MR-KEYFAITH** (a + reserved / accessor / colliding key must not mutate host-structure metadata or + be silently dropped — **ASSUMED, not proven**: treat an MR-KEYFAITH divergence + as advisory unless a concrete drop / mutation is observed). **FAIL gating + (oracle-authoritative two-tier, NO false-positive storm):** FAIL the AC on an + accept-set divergence ONLY when the hand-coded oracle AUTHORITATIVELY reflects a + spec that is STRICTLY NARROWER than the unit's accept-set (the advertised + contract is narrow and explicit — e.g. ASCII digits only, no leading zero, + bounded [0,N]); when the advertised width is NOT unambiguously narrower than + what the unit accepts (the boundary is legitimately or arguably WIDE — + Unicode-aware, locale-flexible, list-format-tolerant), the oracle (not the + unit) is the suspect: record the divergence as ADVISORY `[MEDIUM]` Feedback and + PASS-WITH-CAVEATS, NEVER a force-FAIL (this mirrors the EC-SELFDOC fail-open + posture). A single-character validator regression that the committed suite + still passes GREEN is exactly the narrow-spec class this EXECUTED sweep catches + and the suite does not. This sweep is **always-on** — independent of the + verification-depth tier, applied at `standard` too — gated ONLY by its own + switch: the orchestrator inlines `Accept-set conformance: {auto|off}` into your + spawn prompt (alongside `Oracle verification:` / `Evidence floor:` / `Selfdoc + verification:`); read it from the prompt, NOT from disk; absent field → `auto`; + when `off`, skip the EXECUTED sweep and verify the boundary by the prior + read-only strictness reasoning above, recording a one-line Caveat. **Caveat arm + (no-runnable-artifact)**: when the unit is a COMPILED-language artifact you + cannot run black-box (your scratch allowlist grants `node` / `python3` but, for + Rust/Go, only `cargo test` / `go test` — no `rustc` / `cargo run` / `go run` / + built binary), run the oracle alone, record the divergence you CAN derive + statically, and set `caveat=no-runnable-artifact` on the `[ACCEPT-SET-SWEEP]` + emit so a null result is never confused with a clean sweep. - **L-CONTRACT-CONFORMANCE** — does each generated unit's observable behaviour match its OWN stated description / declared schema / documented contract (a function that does not do what its name and doc-comment claim; a tool whose @@ -462,7 +514,7 @@ The natural execution order of this agent (verify ACs depth-first, then `Write` 1. **Skeleton write before verification.** As your FIRST action, `Write` the report path with a top-of-file line `## Status: IN_PROGRESS` followed by an AC checklist (one `- [ ] AC-N: ` line per AC extracted from the plan). This MUST happen before invoking any Bash, Read, or Grep verification tool. The resulting file is a partial-state marker that the orchestrator can detect even if you terminate mid-verification. -2. **Terminal rewrite before return.** After completing AC verification, rewrite the same file with final verdicts (`- [x] AC-N` or `- [ ] AC-N — FAILED: reason`) and replace the top-of-file `## Status: IN_PROGRESS` with the terminal `## Status: PASS`, `## Status: PASS-WITH-CAVEATS`, `## Status: FAIL`, or `## Status: FAIL-CRITICAL`. The terminal `## Status:` line MUST be the FIRST `## Status:` line in the file (the orchestrator inspects the first match). +2. **Terminal rewrite before return.** After completing AC verification, rewrite the same file with final verdicts (`- [x] AC-N` or `- [ ] AC-N — FAILED: reason`) and replace the top-of-file `## Status: IN_PROGRESS` with the terminal `## Status: PASS`, `## Status: PASS-WITH-CAVEATS`, `## Status: FAIL`, or `## Status: FAIL-CRITICAL`. The terminal `## Status:` line MUST be the FIRST `## Status:` line in the file (the orchestrator inspects the first match). **Accept-set sweep section (persisted observability, v8.5.0+):** when the EXECUTED accept-set conformance sweep (`## Failure-class panel` L-ROBUSTNESS) is in scope, the terminal rewrite MUST include in the PERSISTED report body a section `## Accept-set sweep` with exactly one line per external-input boundary INSPECTED (not only the ones that triggered) — `boundary={A|U|W|K} triggered={y|n} ran={y|n} astral={y|n} corpus-size={N} divergences={D} authoritative={y|n} caveat={none|no-runnable-artifact}` — so a dogfood greps the persisted `eval-round-N.md` (this report body, NOT the under-500-token `## Result` return envelope) and can tell `triggered=n` (scanned, recognized nothing) apart from a fired sweep apart from feature-absent. Emit `triggered=n` for every boundary you scanned that did not advertise strict/canonical/lossless/limit and has no same-input-class sibling; this UNCONDITIONAL per-boundary line is the falsifiability instrument (mirrors the unconditional `[ORACLE-AUDIT]` contract that survived to the dogfood reader, NOT the conditional `[EVAL-PANEL]` one that did not). Write `## Accept-set sweep\nn/a (no external-input boundary in scope)` when the diff introduces or touches no external-input boundary at all. 3. **Output path stability.** The `**Output**` field returned to the caller MUST be the same path written in step 1. Do not rename, move, or duplicate the file between the skeleton write and the terminal rewrite. diff --git a/agents/ac-evaluator.md b/agents/ac-evaluator.md index 3431ec1..08f3a62 100644 --- a/agents/ac-evaluator.md +++ b/agents/ac-evaluator.md @@ -196,7 +196,7 @@ Acceptable AC verification methods (in priority order): When a runtime or visual AC is in scope AND a browser-automation utility skill is available, you MUST gather live evidence via method 6 — code inspection (methods 3-4) alone is NOT sufficient evidence to PASS such an AC. If no browser-automation skill is available, fall back to code inspection and reflect the missing live verification in the Caveats field (see PASS-WITH-CAVEATS). -If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. The carve-out permits EVIDENCE-GATHERING on already-built behaviour, NEVER a substitute for missing coverage: (a) for a computational AC, an independent-oracle probe under `.simple-workflow/scratch/` that derives the expected value from an oracle independent of the code; and (b) the **behavioral evidence probes** this section already directs — the time-bounded watchdog probe of an external-input boundary (point 5 below) and an EC-SELFDOC real-build / advertised-boundary probe — which likewise run under `.simple-workflow/scratch/` as independent verification of an already-built behaviour, not coverage workarounds. +If an AC requires behavior the existing test suite does not cover, the correct verdict is FAIL with an observation that test coverage is insufficient — NOT a workaround via scratch script. The carve-out permits EVIDENCE-GATHERING on already-built behaviour, NEVER a substitute for missing coverage: (a) for a computational AC, an independent-oracle probe under `.simple-workflow/scratch/` that derives the expected value from an oracle independent of the code; and (b) the **behavioral evidence probes** this section already directs — the time-bounded watchdog probe of an external-input boundary (point 5 below) and an EC-SELFDOC real-build / advertised-boundary probe — which likewise run under `.simple-workflow/scratch/` as independent verification of an already-built behaviour, not coverage workarounds; and (c) the **accept-set conformance sweep** — when a boundary advertises strict / canonical / lossless / limit OR a same-input-class sibling exists, an EXECUTED generative grammar-complement sweep (the four metamorphic relations of `## Failure-class panel` L-ROBUSTNESS, per `skills/impl/references/accept-set-conformance-harness.md`) whose accept-set is diffed black-box against an independent hand-coded spec oracle, run under `.simple-workflow/scratch/` and discarded after the round. This sweep is EVIDENCE-GATHERING on the already-built validator, NOT a substitute for missing PRODUCT test coverage: when the sweep finds an accept-set leak, the durable fix is producer-side — the next implementer / test-writer round commits a fixed rejection characterization test to the PRODUCT tests (your scratch corpus is ephemeral and never committed); you record the leaking input class in your Feedback so that round can pin it. **Exception**: If a truly temporary file is unavoidable, write to `os.tmpdir()` (Node) / `$TMPDIR` (POSIX) and clean up via the script's own `finally` block — NEVER `rm` as a separate shell command after the run (rm may be denied by permission gating, leaving the file behind). For oracle probes specifically, prefer the `.simple-workflow/scratch/` carve-out above; this `os.tmpdir()` path is the general fallback for any other unavoidable temp file. @@ -410,6 +410,58 @@ single pass under-checks: emit — and FAIL the unit when its enforced boundary is wider than the strictness it advertises (accepted silently AND not normalized-idempotent), not only when a value is corrupted. + **Accept-set conformance (EXECUTE, always-on, `accept_set_conformance`)**: + this strictness clause is satisfied by READING, and live dogfoods leaked + despite it — so when a boundary's contract lexically advertises **strict / + canonical / lossless / limit** (word-existence in the AC, its Implementation + Notes, the docstring, or `--help`) OR a sibling accepts the **same input + class** (the `shared_input_boundary` peer signal forwarded by the planner / + ticket-evaluator), you MUST NOT merely reason about the accept set — you MUST + **EXECUTE** a generative grammar-complement sweep in `.simple-workflow/scratch/` + (the behavioral evidence probe authorized at `## AC Verification Method`, + clause (c)) and diff its accept-set against an **independent hand-coded spec + oracle** you write from the spec, never by calling the unit's own validator / + `int()` / `Number()` / `isdigit()`. Derive a per-boundary **Grammar Card** — + `A` = the advertised input ALPHABET, `U` = any Unicode normalization / + decimal-digit transform, `W` = the canonical WRITER form, `K` = any KEYED + structure built from untrusted input — and run the four machine-generated + metamorphic relations black-box under a watchdog with a `mulberry32`-seeded + corpus (shape + worked example: + `skills/impl/references/accept-set-conformance-harness.md`): **MR-FINITE** (a + parse-accepted input whose conversion overflows to non-finite / out-of-range), + **MR-ALPHABET** (enumerate the Unicode decimal-digit property complement across + the BMP AND the astral planes — your generator names NO script and hard-codes + NO codepoint list; it iterates the codepoint space and selects by the + decimal-digit property, so every script's digits are covered for ALL inputs), + **MR-CANONICAL** (a structurally-valid-but-non-canonical form the writer would + never emit must be rejected or normalized-idempotent), and **MR-KEYFAITH** (a + reserved / accessor / colliding key must not mutate host-structure metadata or + be silently dropped — **ASSUMED, not proven**: treat an MR-KEYFAITH divergence + as advisory unless a concrete drop / mutation is observed). **FAIL gating + (oracle-authoritative two-tier, NO false-positive storm):** FAIL the AC on an + accept-set divergence ONLY when the hand-coded oracle AUTHORITATIVELY reflects a + spec that is STRICTLY NARROWER than the unit's accept-set (the advertised + contract is narrow and explicit — e.g. ASCII digits only, no leading zero, + bounded [0,N]); when the advertised width is NOT unambiguously narrower than + what the unit accepts (the boundary is legitimately or arguably WIDE — + Unicode-aware, locale-flexible, list-format-tolerant), the oracle (not the + unit) is the suspect: record the divergence as ADVISORY `[MEDIUM]` Feedback and + PASS-WITH-CAVEATS, NEVER a force-FAIL (this mirrors the EC-SELFDOC fail-open + posture). A single-character validator regression that the committed suite + still passes GREEN is exactly the narrow-spec class this EXECUTED sweep catches + and the suite does not. This sweep is **always-on** — independent of the + verification-depth tier, applied at `standard` too — gated ONLY by its own + switch: the orchestrator inlines `Accept-set conformance: {auto|off}` into your + spawn prompt (alongside `Oracle verification:` / `Evidence floor:` / `Selfdoc + verification:`); read it from the prompt, NOT from disk; absent field → `auto`; + when `off`, skip the EXECUTED sweep and verify the boundary by the prior + read-only strictness reasoning above, recording a one-line Caveat. **Caveat arm + (no-runnable-artifact)**: when the unit is a COMPILED-language artifact you + cannot run black-box (your scratch allowlist grants `node` / `python3` but, for + Rust/Go, only `cargo test` / `go test` — no `rustc` / `cargo run` / `go run` / + built binary), run the oracle alone, record the divergence you CAN derive + statically, and set `caveat=no-runnable-artifact` on the `[ACCEPT-SET-SWEEP]` + emit so a null result is never confused with a clean sweep. - **L-CONTRACT-CONFORMANCE** — does each generated unit's observable behaviour match its OWN stated description / declared schema / documented contract (a function that does not do what its name and doc-comment claim; a tool whose @@ -462,7 +514,7 @@ The natural execution order of this agent (verify ACs depth-first, then `Write` 1. **Skeleton write before verification.** As your FIRST action, `Write` the report path with a top-of-file line `## Status: IN_PROGRESS` followed by an AC checklist (one `- [ ] AC-N: ` line per AC extracted from the plan). This MUST happen before invoking any Bash, Read, or Grep verification tool. The resulting file is a partial-state marker that the orchestrator can detect even if you terminate mid-verification. -2. **Terminal rewrite before return.** After completing AC verification, rewrite the same file with final verdicts (`- [x] AC-N` or `- [ ] AC-N — FAILED: reason`) and replace the top-of-file `## Status: IN_PROGRESS` with the terminal `## Status: PASS`, `## Status: PASS-WITH-CAVEATS`, `## Status: FAIL`, or `## Status: FAIL-CRITICAL`. The terminal `## Status:` line MUST be the FIRST `## Status:` line in the file (the orchestrator inspects the first match). +2. **Terminal rewrite before return.** After completing AC verification, rewrite the same file with final verdicts (`- [x] AC-N` or `- [ ] AC-N — FAILED: reason`) and replace the top-of-file `## Status: IN_PROGRESS` with the terminal `## Status: PASS`, `## Status: PASS-WITH-CAVEATS`, `## Status: FAIL`, or `## Status: FAIL-CRITICAL`. The terminal `## Status:` line MUST be the FIRST `## Status:` line in the file (the orchestrator inspects the first match). **Accept-set sweep section (persisted observability, v8.5.0+):** when the EXECUTED accept-set conformance sweep (`## Failure-class panel` L-ROBUSTNESS) is in scope, the terminal rewrite MUST include in the PERSISTED report body a section `## Accept-set sweep` with exactly one line per external-input boundary INSPECTED (not only the ones that triggered) — `boundary={A|U|W|K} triggered={y|n} ran={y|n} astral={y|n} corpus-size={N} divergences={D} authoritative={y|n} caveat={none|no-runnable-artifact}` — so a dogfood greps the persisted `eval-round-N.md` (this report body, NOT the under-500-token `## Result` return envelope) and can tell `triggered=n` (scanned, recognized nothing) apart from a fired sweep apart from feature-absent. Emit `triggered=n` for every boundary you scanned that did not advertise strict/canonical/lossless/limit and has no same-input-class sibling; this UNCONDITIONAL per-boundary line is the falsifiability instrument (mirrors the unconditional `[ORACLE-AUDIT]` contract that survived to the dogfood reader, NOT the conditional `[EVAL-PANEL]` one that did not). Write `## Accept-set sweep\nn/a (no external-input boundary in scope)` when the diff introduces or touches no external-input boundary at all. 3. **Output path stability.** The `**Output**` field returned to the caller MUST be the same path written in step 1. Do not rename, move, or duplicate the file between the skeleton write and the terminal rewrite. diff --git a/agents/implementer.md b/agents/implementer.md index b33fc07..bb7a9bb 100644 --- a/agents/implementer.md +++ b/agents/implementer.md @@ -26,7 +26,7 @@ After implementing, run the project's lint command (as defined in CLAUDE.md or p After lint passes, run the project's test command (as defined in CLAUDE.md or project conventions). If tests fail, fix and re-run (max 3 attempts). -When writing these tests, you MUST follow the positive rubric in `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root). For any **computational AC** (one whose PASS/FAIL hinges on a computed numeric/algorithmic value — a ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (a reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — a `NaN` or `Infinity` sentinel surfacing downstream of an accepted value), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). +When writing these tests, you MUST follow the positive rubric in `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root). For any **computational AC** (one whose PASS/FAIL hinges on a computed numeric/algorithmic value — a ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (a reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — a `NaN` or `Infinity` sentinel surfacing downstream of an accepted value), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). **Accept-set conformance retained corpus (always-on, `accept_set_conformance`, v8.5.0+).** Regardless of the `thorough` / `exhaustive` condition in the preceding sentence: when the ac-evaluator's accept-set conformance sweep reports an accept-set leak — an input the spec oracle rejects that a strict / canonical / lossless / limit boundary (or a same-input-class sibling) accepts, named in the evaluator Feedback — commit a **fixed rejection characterization test** to the PRODUCT tests for that leaking input class (the leaking input as a RED case; the validator fix is GREEN), so the regression is locked in the committed suite. This is the producer half of the two-surface retention: the evaluator's scratch sweep is ephemeral and never committed, so the durable test belongs here. Gated by `constraints.accept_set_conformance` (off → skip) but NOT by the depth tier — unlike the committed-seeded-fuzz clause above it is always-on at `standard` too. See `skills/impl/references/accept-set-conformance-harness.md`. Do NOT include self-assessment, subjective comments, or quality judgments in your return value. Report only factual information. diff --git a/agents/test-writer.md b/agents/test-writer.md index 07d4e81..fedc480 100644 --- a/agents/test-writer.md +++ b/agents/test-writer.md @@ -17,7 +17,7 @@ You are a test engineer. Write and run tests following existing project patterns ## Test Design Rubric -Follow `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root) as the positive rubric for test authoring. For any **computational** target (a computed numeric/algorithmic value — ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — a `NaN` or `Infinity` sentinel surfacing downstream of an accepted value), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). +Follow `skills/impl/references/test-authoring-guidance.md` (resolve the path relative to the repository root) as the positive rubric for test authoring. For any **computational** target (a computed numeric/algorithmic value — ratio, threshold, hash, conversion, round-trip, metric), assert against an **independent oracle** (reference library / published formula / hand-computed truth table — never the code's own output) on the **raw, pre-rounding** value with an explicit tolerance; add property / invariant tests (monotonicity, symmetry, idempotence, round-trip, containment); and cover adversarial / non-finite / out-of-range inputs by default (this default-adversarial coverage applies to **computational or behavioral** targets alike — M3, v8.4.0+ — any target whose function takes external / untrusted input, even though the oracle / raw-value / differential rules stay computational-only) — including at least one **parse-accepted-then-overflows** vector (an input the parser ACCEPTS that yields a non-finite / out-of-range intermediate after a conversion — a `NaN` or `Infinity` sentinel surfacing downstream of an accepted value), not only parse-rejected `NaN` / `Infinity` tokens; and, when the function shares an input parser with sibling tools, ensure the input-validation guard lives in the SHARED boundary OR is replicated AND adversarially tested in EVERY sibling tool (see rule 4 of the guidance). A test that re-measures with the implementation's own rounded value is self-confirming and is rejected by tautological rule R4 (`skills/impl/references/tautological-assertion-rules.md`). At the `thorough` / `exhaustive` depth tier, for a standard-backed computational target author **two or more mutually-validated independent oracles** (at least one first-principles, no library) and trust a value only when they agree within tolerance — see `skills/impl/references/independent-oracle-harness.md`; ship a **committed, fixed-seed** property-fuzz loop (reproducible PRNG, tier-scaled case count) over the input distribution, not only fixed fixtures; and where a second INDEPENDENT ALGORITHM for the same contract exists, add an algorithm-vs-algorithm differential within tolerance (membership is necessary-not-sufficient). **Accept-set conformance retained corpus (always-on, `accept_set_conformance`, v8.5.0+).** Regardless of the `thorough` / `exhaustive` condition in the preceding sentence: when the ac-evaluator's accept-set conformance sweep reports an accept-set leak — an input the spec oracle rejects that a strict / canonical / lossless / limit boundary (or a same-input-class sibling) accepts, named in the evaluator Feedback — commit a **fixed rejection characterization test** to the PRODUCT tests for that leaking input class (the leaking input as a RED case; the validator fix is GREEN), so the regression is locked in the committed suite. This is the producer half of the two-surface retention: the evaluator's scratch sweep is ephemeral and never committed, so the durable test belongs here. Gated by `constraints.accept_set_conformance` (off → skip) but NOT by the depth tier — unlike the committed-seeded-fuzz clause above it is always-on at `standard` too. See `skills/impl/references/accept-set-conformance-harness.md`. ## Context Conservation Protocol diff --git a/skills/impl/references/accept-set-conformance-harness.md b/skills/impl/references/accept-set-conformance-harness.md new file mode 100644 index 0000000..c82839e --- /dev/null +++ b/skills/impl/references/accept-set-conformance-harness.md @@ -0,0 +1,199 @@ +# Accept-set conformance harness (executed grammar-complement sweep) + +Binding parties: the `ac-evaluator` / `ac-evaluator-hi` (which EXECUTE the sweep +in scratch), and the `implementer` / `test-writer` (which commit the fixed +rejection test to the PRODUCT tests when the sweep finds a leak). This file gives +the **copyable SHAPE** of an executed accept-set conformance sweep so the +`## Failure-class panel` L-ROBUSTNESS accept-set obligation can be satisfied by +transcribing a known-good structure instead of re-deriving it. See +[`evidence-channels.md`](evidence-channels.md) (EC-METAMORPHIC) and +[`test-authoring-guidance.md`](test-authoring-guidance.md) rules 4 / 7 for the +obligations this shape satisfies. + +The load-bearing element is **execution**: a contract that advertises strict / +canonical / lossless / limit is satisfied by READING, and live runs leaked +despite the prose contract existing — the only thing that catches a one-character +validator regression is the evaluator actually RUNNING the complement corpus +black-box against an INDEPENDENT spec oracle. Adding more prose does not raise +the catch-rate; running the sweep does. + +The single worked module below uses **one** neutral, NON-colour domain (a strict +unsigned decimal integer bounded `[0, 255]`) purely to make the shape concrete +and copyable; that boundary is **illustrative only** — illustrative on both the +domain axis and the language axis, carrying no special status. Transcribe the +ROLES (the Grammar Card, the four MRs, the watchdog, the seeded corpus, the +independent oracle, the fail-open degradation) into whatever boundary your AC +actually inhabits. + +## Trigger (when this sweep is mandatory) + +Run the sweep when EITHER holds: +- the boundary's contract lexically advertises **strict / canonical / lossless / + limit** (word-existence in the AC, its Implementation Notes, the docstring, the + declared schema, or a `--help` line); OR +- a sibling unit accepts the **same input class** (the `shared_input_boundary` + peer signal the planner / ticket-evaluator forward). + +It is **always-on** — independent of the verification-depth tier, applied at +`standard` as well — gated only by `constraints.accept_set_conformance` +(`Accept-set conformance: {auto|off}` in the spawn prompt; absent → `auto`). + +## Grammar Card — derive the axes from the AC/spec + +Read the boundary's spec and fill the four axes; each axis drives one MR: + +- **A — Alphabet**: the symbol set the boundary advertises (e.g. ASCII decimal + digits `0-9`). Drives MR-ALPHABET. +- **U — Unicode transform**: any normalization / digit-folding the boundary + applies before validation (e.g. NFC, a digit-folding numeric parse). Drives the + astral span of MR-ALPHABET. +- **W — canonical Writer**: the single canonical output form the boundary + promises (e.g. no leading zero). Drives MR-CANONICAL. +- **K — Keyed structure**: any map / record built from untrusted input. Drives + MR-KEYFAITH. + +## The independent oracle — SPEC-derived, never the unit's own validator + +Hand-code the accept predicate from the SPEC. It MUST NOT call the unit's +validator, and MUST NOT lean on a language primitive that shares the bug class +(`int()` / `Number()` / `str.isdigit()` accept the whole Unicode decimal-digit +property, which is exactly the leak under test) — check character codes by hand. + +```python +# ILLUSTRATIVE ONLY (neutral domain, Python): strict unsigned decimal octet [0,255]. +# Oracle is SPEC-DERIVED and INDEPENDENT of the unit: hand char-code check, +# never int() / str.isdigit(). +def oracle_accepts(s): + if not isinstance(s, str) or len(s) == 0: + return False + for ch in s: + if ord(ch) < 0x30 or ord(ch) > 0x39: # ASCII digits only + return False + if len(s) > 1 and s[0] == '0': # canonical: no leading zero + return False + v = 0 + for ch in s: + v = v * 10 + (ord(ch) - 0x30) + if v > 255: # MR-FINITE: bounded magnitude + return False + return True +``` + +## The four metamorphic relations + the generated corpus + +```python +# ILLUSTRATIVE ONLY: build the complement corpus by PROPERTY, naming no script. +import unicodedata + +def make_corpus(): + corpus = list('0 1 9 10 42 99 100 199 255'.split()) # in-set anchors + corpus += ['256','300','00','01','0255','+1','-1','1.0','1e2','',' ','\t9'] # MR-FINITE / MR-CANONICAL + bmp = astral = 0 + for cp in range(0x110000): # MR-ALPHABET: iterate the codepoint space + if 0x30 <= cp <= 0x39 or 0xD800 <= cp <= 0xDFFF: + continue + ch = chr(cp) + if unicodedata.category(ch) == 'Nd': # select by the decimal-digit PROPERTY + corpus.append(ch) # every script's digits, BMP + astral + astral += (cp > 0xFFFF) + bmp += (cp <= 0xFFFF) + return corpus, bmp, astral +``` + +- **MR-FINITE** — a parse-accepted input whose conversion overflows to a + non-finite / out-of-range intermediate must be rejected (`256`, an + overflowing magnitude). A hang under the watchdog is a FAIL. +- **MR-ALPHABET** — every member of the Unicode decimal-digit property complement + (BMP **and** astral) that the spec's alphabet excludes must be rejected. The + generator names NO script and hard-codes NO codepoint list; a non-zero astral + count is the proof the complement actually crossed the BMP boundary. +- **MR-CANONICAL** — a structurally-valid-but-non-canonical form the canonical + Writer would never emit (`01`, `0255`) must be rejected OR be + normalized-idempotent (`f(f(x)) == f(x)` and `f(x)` is the canonical form). +- **MR-KEYFAITH** — *(ASSUMED, not proven)* a reserved / accessor / colliding key + in a K-axis structure must not mutate host-structure metadata or be silently + dropped. The structural-key reflection this hypothesises is unverified; treat + an MR-KEYFAITH divergence as advisory unless a concrete drop / mutation is + observed. + +## Black-box diff under a watchdog (the executed step) + +```python +# ILLUSTRATIVE ONLY: drive the corpus through the REAL boundary, diff vs oracle. +# A SIGKILL watchdog turns a hang into a FAIL (MR-FINITE DoS arm). The seed makes +# any random extension reproducible (mulberry32 in JS; random.Random(seed) here). +def run_sweep(unit_accepts, corpus): + false_accepts, false_rejects, threw = [], [], [] + for s in corpus: + want = oracle_accepts(s) + try: + got = unit_accepts(s) # the REAL public boundary, never an internal handler + except Exception: + threw.append(s); continue + if got and not want: # candidate accept-set DIVERGENCE + false_accepts.append(s) + if (not got) and want: + false_rejects.append(s) + return false_accepts, false_rejects, threw +``` + +## FAIL gating — oracle-authoritative two-tier (NO false-positive storm) + +A non-empty `false_accepts` is only a candidate. Gate the verdict on whether the +hand-coded oracle is AUTHORITATIVE for this boundary: + +- **FAIL** the AC only when the oracle authoritatively reflects a spec that is + STRICTLY NARROWER than the unit's accept-set — the advertised contract is + narrow and explicit (e.g. "ASCII digits only", "no leading zero", + "bounded [0,N]"). A narrow-spec false-accept the oracle rejects is the leak; + name the leaking class in Feedback so the producer round can pin it. Emit + `authoritative=y` on the marker. +- **ADVISORY only (PASS-WITH-CAVEATS, never force-FAIL)** when the advertised + width is NOT unambiguously narrower than what the unit accepts — the boundary + is legitimately or arguably WIDE (Unicode-aware, locale-flexible, + list-format-tolerant). Here the oracle, not the unit, is the suspect: record + the divergence as `[MEDIUM]` Feedback and a Caveat. Emit `authoritative=n`. + +On a CORRECT narrow unit the sweep is a clean zero (the false-positive-storm +absent check the worked example demonstrates by construction). + +## Two-surface retention (who commits what) + +- **Evaluator (read-only)**: the sweep above runs in `.simple-workflow/scratch/` + and is **discarded** after the round; the evaluator cannot write PRODUCT tests. + It records the divergence in Feedback, the persisted `## Accept-set sweep` + report section, and the `[ACCEPT-SET-SWEEP]` marker. +- **Producer (`implementer` / `test-writer`)**: when the evaluator's Feedback + reports an accept-set leak, the next round commits a **fixed rejection + characterization test** to the PRODUCT tests (the leaking input as a RED case; + the validator fix is GREEN) so the regression is locked in the committed suite. + +## No-runnable-artifact caveat (compiled languages) + +When the unit is a COMPILED-language artifact you cannot run black-box (the +evaluator allowlist grants `node` / `python3` but, for Rust/Go, only +`cargo test` / `go test` — no `rustc` / `cargo run` / `go run` / built binary), +you cannot drive the corpus through the real boundary. Run the oracle alone, +record what divergence you CAN derive statically, set +`caveat=no-runnable-artifact` on the marker, and record a one-line Caveat — +never a force-FAIL. + +## Degradation (fail-open) + +Four fail-open arms — the harness never fabricates an oracle and a missing / +non-authoritative oracle is never a FAIL: + +1. **No trigger**: the boundary advertises no strict / canonical / lossless / + limit contract and no same-input-class sibling exists — the sweep is `n/a`. +2. **No runnable artifact**: a compiled unit with no runnable binary — oracle + alone, `caveat=no-runnable-artifact`, Caveat. +3. **No spec**: the domain has no spec to hand-code an oracle from — use whichever + channels DO exist and record a Caveat. +4. **Wide-but-spec-correct**: the spec PERMITS a wider accept-set than the oracle + encodes (the boundary is advertised flexible / Unicode-aware / + locale-tolerant) — do NOT force-FAIL on `false_accepts` the oracle rejects; + the oracle, not the unit, is the suspect. Downgrade to advisory + (`authoritative=n`) and record a Caveat. + +This shape is read at evaluation time to drive an EXECUTED sweep; the producer +half is read at authoring time. diff --git a/skills/impl/references/evidence-channels.md b/skills/impl/references/evidence-channels.md index ef77cf6..457273d 100644 --- a/skills/impl/references/evidence-channels.md +++ b/skills/impl/references/evidence-channels.md @@ -68,6 +68,20 @@ but is NOT independent evidence for a *behavioral* AC on its own. a hand-picked grid — see [`independent-oracle-harness.md`](independent-oracle-harness.md); it degrades to deterministic coverage + a Caveat where no PRNG idiom exists. +- **EC-METAMORPHIC** — a **specialization layered on EC-PROPERTY**: when a boundary + advertises **strict / canonical / lossless / limit** or a same-input-class sibling + exists, an EXECUTED generative grammar-complement sweep whose accept-set is diffed + black-box against an INDEPENDENT hand-coded spec oracle (the four metamorphic + relations MR-FINITE / MR-ALPHABET / MR-CANONICAL / MR-KEYFAITH — see + [`accept-set-conformance-harness.md`](accept-set-conformance-harness.md)). + *Independent because* the oracle derives the spec accept-set without ever calling + the unit's own validator. It is NOT a member of the four-channel naming set + `{EC-ORACLE, EC-DIFFERENTIAL, EC-PROPERTY, EC-RUNTIME}` the Gate 8 binding rule + draws from — a behavioral AC still names one of those four. FAIL gating is + oracle-authoritative two-tier (force-FAIL only on a strictly-narrower advertised + contract; otherwise advisory `[MEDIUM]`), and where no runnable artifact exists it + is **fail-open** with a Caveat. MR-KEYFAITH is **ASSUMED, not proven**: treat an + MR-KEYFAITH divergence as advisory unless a concrete drop / mutation is observed. - **EC-RUNTIME** — black-box observation through the real public / protocol boundary: the real CLI, the real MCP `Client` over a transport, the exported public API, a rendered DOM — never internal handlers reached by reflection or by imports a real diff --git a/skills/impl/references/test-authoring-guidance.md b/skills/impl/references/test-authoring-guidance.md index 7cfce76..1583def 100644 --- a/skills/impl/references/test-authoring-guidance.md +++ b/skills/impl/references/test-authoring-guidance.md @@ -96,7 +96,11 @@ exit code) needs only a direct assertion. build added a finiteness guard to one tool but not the analogous sibling tools parsing the same input class, shipping a live DoS hang reachable through the unguarded siblings while the guarded tool passed. Write the class-(b) adversarial test against EACH sibling tool, not only - the one tool the AC names. + the one tool the AC names. When the ac-evaluator's EXECUTED accept-set conformance sweep (see + [`accept-set-conformance-harness.md`](accept-set-conformance-harness.md)) reports an accept-set + leak across this shared input class, commit a fixed rejection characterization test for that + leaking input class (leaking input as the RED case, validator fix GREEN) — gated by + `constraints.accept_set_conformance` and always-on, not depth-gated. 5. **Spec-completeness.** Assert every output field and guarantee the spec promises — a missing field, an absent status flag, a dropped metric field, or diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index 9ed433f..11007b2 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -9963,6 +9963,7 @@ decontam_norm_files=( "$REPO_DIR/skills/impl/references/verification-depth.md" "$REPO_DIR/skills/impl/references/tautological-assertion-rules.md" "$REPO_DIR/skills/impl/references/independent-oracle-harness.md" + "$REPO_DIR/skills/impl/references/accept-set-conformance-harness.md" ) decontam_denylist=( 'oklch(' @@ -10195,6 +10196,72 @@ assert_true \ "$ev_sd6_result" +# CT-AASC-1 (accept-set conformance EXECUTED sweep + persisted observability, both twins, v8.5.0+). +# Load-bearing per charter section H: the ONLY truly additive element is the evaluator ACTUALLY +# EXECUTING the grammar-complement sweep in scratch (not more prose contract). Pins (a) the +# executed-sweep mandate (net-new phrase 'accept-set conformance' + the EXECUTE verb), and (b) the +# [ACCEPT-SET-SWEEP] marker routed into the PERSISTED report body (the M8 falsifiability fix). +# Both net-new tokens are HEAD=0 (verified RED-first: grep returns 0 files); byte-identical in both +# twins (CT-EV-MODEL-1 strip-then-diff covers the identity). A revert flips each grep to FAIL. +aasc1_acev_phrase=$(grep -ciF 'accept-set conformance' "$ACEV_EV" || true) +aasc1_hi_phrase=$(grep -ciF 'accept-set conformance' "$ACEVHI_EV" || true) +aasc1_acev_marker=$(grep -cF '[ACCEPT-SET-SWEEP]' "$ACEV_EV" || true) +aasc1_hi_marker=$(grep -cF '[ACCEPT-SET-SWEEP]' "$ACEVHI_EV" || true) +aasc1_acev_exec=$(grep -cF 'EXECUTE' "$ACEV_EV" || true) +aasc1_hi_exec=$(grep -cF 'EXECUTE' "$ACEVHI_EV" || true) +aasc1_result="false" +if [ "$aasc1_acev_phrase" -ge 1 ] && [ "$aasc1_hi_phrase" -ge 1 ] && [ "$aasc1_acev_marker" -ge 1 ] && [ "$aasc1_hi_marker" -ge 1 ] && [ "$aasc1_acev_exec" -ge 1 ] && [ "$aasc1_hi_exec" -ge 1 ]; then aasc1_result="true"; fi +assert_true \ + "CT-AASC-1 (executed accept-set sweep + observability, both twins): ac-evaluator phrase ($aasc1_acev_phrase>=1) marker ($aasc1_acev_marker>=1) EXECUTE ($aasc1_acev_exec>=1) + -hi phrase ($aasc1_hi_phrase>=1) marker ($aasc1_hi_marker>=1) EXECUTE ($aasc1_hi_exec>=1)" \ + "$aasc1_result" + +# CT-AASC-2 (four metamorphic relations + no-runnable-artifact caveat, both twins, v8.5.0+). +# Pins the executed sweep's four MR-* relations (MR-ALPHABET enumerates the Unicode decimal-digit +# complement BMP+astral naming no script) and the compiled-language Caveat arm (blocker 2: a built +# Rust/Go artifact cannot be run black-box, so a null must be distinguishable from a clean sweep). +# All five tokens HEAD=0 (verified RED-first); byte-identical in both twins. +aasc2_ok="true" +for aasc2_tok in 'MR-FINITE' 'MR-ALPHABET' 'MR-CANONICAL' 'MR-KEYFAITH' 'no-runnable-artifact'; do + aasc2_a=$(grep -cF "$aasc2_tok" "$ACEV_EV" || true) + aasc2_b=$(grep -cF "$aasc2_tok" "$ACEVHI_EV" || true) + if [ "$aasc2_a" -lt 1 ] || [ "$aasc2_b" -lt 1 ]; then aasc2_ok="false"; echo " CT-AASC-2 missing [$aasc2_tok] acev=$aasc2_a hi=$aasc2_b" >&2; fi +done +assert_true \ + "CT-AASC-2 (4 metamorphic relations + no-runnable-artifact caveat, both twins): MR-FINITE/ALPHABET/CANONICAL/KEYFAITH + caveat present in ac-evaluator AND -hi ($aasc2_ok)" \ + "$aasc2_ok" + +# CT-AASC-3 (producer-side accept-set retained-corpus obligation, both producers, v8.5.0+). +# Load-bearing per charter section H clause (iii) + blocker 9: the ac-evaluator is read-only and +# cannot write PRODUCT tests, so the fixed rejection characterization test MUST be a producer +# obligation. Pins the net-new phrase in implementer + test-writer (byte-symmetric per CLAUDE.md +# ## Modifications). HEAD=0 (verified RED-first). Reuses the existing IMPLAGENT_EV / TW_EV handles +# (declared upstream at lines 9621/9620 and 9736/9735) — NOT a fresh IMPL_AGENT_EV (Review naming-nit). +aasc3_impl=$(grep -ciF 'accept-set conformance retained corpus' "$IMPLAGENT_EV" || true) +aasc3_tw=$(grep -ciF 'accept-set conformance retained corpus' "$TW_EV" || true) +aasc3_result="false" +if [ "$aasc3_impl" -ge 1 ] && [ "$aasc3_tw" -ge 1 ]; then aasc3_result="true"; fi +assert_true \ + "CT-AASC-3 (producer-side retained-corpus obligation, both producers): implementer ($aasc3_impl>=1) + test-writer ($aasc3_tw>=1)" \ + "$aasc3_result" + +# CT-AASC-5 (accept-set-conformance-harness.md exists + wired; EC-METAMORPHIC + Grammar Card, +# v8.5.0+). Mirrors CT-EV-13 (independent-oracle-harness exists+linked). Prose-support scaffold +# (charter section H: a doc is recognition-gated), pinned so the wiring cannot silently rot. Net-new +# tokens 'accept-set-conformance-harness', 'EC-METAMORPHIC', 'Grammar Card' all HEAD=0 (verified). +AASC_DOC="$REPO_DIR/skills/impl/references/accept-set-conformance-harness.md" +aasc5_exists=0; if [ -f "$AASC_DOC" ]; then aasc5_exists=1; fi +aasc5_link_acev=$(grep -cF 'accept-set-conformance-harness' "$ACEV_EV" || true) +aasc5_link_hi=$(grep -cF 'accept-set-conformance-harness' "$ACEVHI_EV" || true) +aasc5_link_ech=$(grep -cF 'accept-set-conformance-harness' "$ECH_EV" || true) +aasc5_ecmeta=$(grep -cF 'EC-METAMORPHIC' "$ECH_EV" || true) +aasc5_grammar=$(grep -cF 'Grammar Card' "$AASC_DOC" 2>/dev/null || true) +aasc5_result="false" +if [ "$aasc5_exists" -eq 1 ] && [ "$aasc5_link_acev" -ge 1 ] && [ "$aasc5_link_hi" -ge 1 ] && [ "$aasc5_link_ech" -ge 1 ] && [ "$aasc5_ecmeta" -ge 1 ] && [ "$aasc5_grammar" -ge 1 ]; then aasc5_result="true"; fi +assert_true \ + "CT-AASC-5 (harness doc exists + wired + EC-METAMORPHIC + Grammar Card): exists ($aasc5_exists=1), linked from ac-evaluator ($aasc5_link_acev>=1) + -hi ($aasc5_link_hi>=1) + evidence-channels ($aasc5_link_ech>=1), EC-METAMORPHIC in evidence-channels ($aasc5_ecmeta>=1), Grammar Card in doc ($aasc5_grammar>=1)" \ + "$aasc5_result" + + echo "" # ============================================================================= From 5ff2e287c161204a86a888105ab6ab07322856ba Mon Sep 17 00:00:00 2001 From: aimsise Date: Wed, 17 Jun 2026 21:21:19 +0900 Subject: [PATCH 07/15] feat(eval): AASC hardening -- deterministic per-AC trigger + black-box self-incrimination (load-bearing core) Hardens the AASC accept-set sweep after the dogfood46 efficacy run showed self-elicitation is real but non-uniform (1 of 3 evaluators ran a genuine property-enumerated sweep; one hand-picked a sample, one stood the sweep down on delegation grounds; astral was never swept). An adversarial design review trimmed ~60% of the proposed hardening as recognition-gated cue-accretion (the astral / no-script / property-enumeration prose already existed and was ignored); this ships only the load-bearing core. - skills/impl/SKILL.md: the orchestrator computes a per-AC deterministic trigger at the Step-15 handoff (a lexical strict/canonical/lossless/limit scan + the shared_input_boundary sibling signal) and inlines it into the evaluator spawn as `Accept-set conformance: {auto|off} triggered-on={AC-ids}`, emitting [ACCEPT-SET-TRIGGER] to stderr. Roster updated (fields a-m, + Accept-set conformance). - agents/ac-evaluator{,-hi}.md (byte-identical): the lens READS triggered-on= and sweeps exactly those ACs without re-recognizing; a triggered-on AC may NOT be stood down on delegation grounds (kills the dogfood46 ticket-002 archetype by coupling the obligation to the orchestrator's list); a black-box no-implementation-peek prohibition (do not skip astral by inspecting the unit's internals to argue an input class cannot occur); and a self-incrimination rule (ran=y astral=n on a triggered AC is a NON-CONFORMANT shallow sweep, recorded as such -- turning the persisted `## Accept-set sweep` line into a falsifiable instrument). - tests/test-skill-contracts.sh: CT-AASC-6 (the trigger wire) + CT-AASC-7 (implementation-peek + shallow-sweep), RED-first proven. Deliberately NOT changed: the astral / no-script / property-enumeration prose (already maximal); accept-set-conformance-harness.md (re-stating it is accretion); the deferred kill-switch declaration L1/L2 + the stderr twin. Tests: test-skill-contracts 845/845, path-consistency 144/144, twins byte-identical, ShellCheck clean, CT-DECONTAM-1 zero product-instance hits. Honest scope: the deterministic trigger MOVES the recognition from the proven-weak evaluator to the orchestrator (a variance reduction, not a hard mechanical gate -- the orchestrator is still instructed, not hooked); the depth's only load-bearing part is the self-incrimination falsifiability (astral coverage is made visible, not forced). Efficacy is UNPROVEN until a re-dogfood shows the delegating sibling now sweeps (triggered=y ran=y astral=y) where dogfood46 stood it down. Co-Authored-By: Claude Opus 4.8 (1M context) --- agents/ac-evaluator-hi.md | 28 +++++++++++++++++++++++----- agents/ac-evaluator.md | 28 +++++++++++++++++++++++----- skills/impl/SKILL.md | 4 ++-- tests/test-skill-contracts.sh | 26 ++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 12 deletions(-) diff --git a/agents/ac-evaluator-hi.md b/agents/ac-evaluator-hi.md index 1095e53..c555ba6 100644 --- a/agents/ac-evaluator-hi.md +++ b/agents/ac-evaluator-hi.md @@ -451,11 +451,29 @@ single pass under-checks: still passes GREEN is exactly the narrow-spec class this EXECUTED sweep catches and the suite does not. This sweep is **always-on** — independent of the verification-depth tier, applied at `standard` too — gated ONLY by its own - switch: the orchestrator inlines `Accept-set conformance: {auto|off}` into your - spawn prompt (alongside `Oracle verification:` / `Evidence floor:` / `Selfdoc - verification:`); read it from the prompt, NOT from disk; absent field → `auto`; - when `off`, skip the EXECUTED sweep and verify the boundary by the prior - read-only strictness reasoning above, recording a one-line Caveat. **Caveat arm + switch: the orchestrator inlines `Accept-set conformance: {auto|off} + triggered-on={AC-id-list}` into your spawn prompt (alongside `Oracle + verification:` / `Evidence floor:` / `Selfdoc verification:`); read it from the + prompt, NOT from disk; absent field → `auto`. **Deterministic trigger — read + `triggered-on=`, do NOT re-recognize:** the orchestrator has ALREADY computed, + per AC, whether the boundary advertises strict / canonical / lossless / limit + OR is a shared-input sibling, and names the triggered AC-ids in `triggered-on=`. + EXECUTE the sweep for EXACTLY those ACs; you MUST NOT stand a `triggered-on=` AC + down on your own judgement — in particular, "the unit delegates validation to a + shared / part-1 parser" is NOT a reason to skip a listed AC (the delegating + surface re-exposes the boundary, which is why the orchestrator listed it). When + `triggered-on=(none)`, run no sweep and record `triggered=n` for every boundary. + When `Accept-set conformance: off`, skip the EXECUTED sweep regardless and + verify by the prior read-only strictness reasoning above, recording a one-line + Caveat. **Black-box — no implementation-peek:** you MUST NOT narrow or skip the + property-enumerated complement corpus (above) by inspecting the unit's internals + to argue an input class cannot occur (e.g. concluding the alphabet is ASCII-only + from the matcher the unit appears to use); the boundary's own accept / reject + decision is the only evidence. **Self-incriminating record:** on a + `triggered-on=` AC, an `## Accept-set sweep` line with `ran=n`, or with `ran=y + astral=n`, is a NON-CONFORMANT shallow sweep — not a clean pass; record it as + such (the astral planes are part of the mandated complement, so a genuine run + yields `astral=y`). **Caveat arm (no-runnable-artifact)**: when the unit is a COMPILED-language artifact you cannot run black-box (your scratch allowlist grants `node` / `python3` but, for Rust/Go, only `cargo test` / `go test` — no `rustc` / `cargo run` / `go run` / diff --git a/agents/ac-evaluator.md b/agents/ac-evaluator.md index 08f3a62..046be7f 100644 --- a/agents/ac-evaluator.md +++ b/agents/ac-evaluator.md @@ -451,11 +451,29 @@ single pass under-checks: still passes GREEN is exactly the narrow-spec class this EXECUTED sweep catches and the suite does not. This sweep is **always-on** — independent of the verification-depth tier, applied at `standard` too — gated ONLY by its own - switch: the orchestrator inlines `Accept-set conformance: {auto|off}` into your - spawn prompt (alongside `Oracle verification:` / `Evidence floor:` / `Selfdoc - verification:`); read it from the prompt, NOT from disk; absent field → `auto`; - when `off`, skip the EXECUTED sweep and verify the boundary by the prior - read-only strictness reasoning above, recording a one-line Caveat. **Caveat arm + switch: the orchestrator inlines `Accept-set conformance: {auto|off} + triggered-on={AC-id-list}` into your spawn prompt (alongside `Oracle + verification:` / `Evidence floor:` / `Selfdoc verification:`); read it from the + prompt, NOT from disk; absent field → `auto`. **Deterministic trigger — read + `triggered-on=`, do NOT re-recognize:** the orchestrator has ALREADY computed, + per AC, whether the boundary advertises strict / canonical / lossless / limit + OR is a shared-input sibling, and names the triggered AC-ids in `triggered-on=`. + EXECUTE the sweep for EXACTLY those ACs; you MUST NOT stand a `triggered-on=` AC + down on your own judgement — in particular, "the unit delegates validation to a + shared / part-1 parser" is NOT a reason to skip a listed AC (the delegating + surface re-exposes the boundary, which is why the orchestrator listed it). When + `triggered-on=(none)`, run no sweep and record `triggered=n` for every boundary. + When `Accept-set conformance: off`, skip the EXECUTED sweep regardless and + verify by the prior read-only strictness reasoning above, recording a one-line + Caveat. **Black-box — no implementation-peek:** you MUST NOT narrow or skip the + property-enumerated complement corpus (above) by inspecting the unit's internals + to argue an input class cannot occur (e.g. concluding the alphabet is ASCII-only + from the matcher the unit appears to use); the boundary's own accept / reject + decision is the only evidence. **Self-incriminating record:** on a + `triggered-on=` AC, an `## Accept-set sweep` line with `ran=n`, or with `ran=y + astral=n`, is a NON-CONFORMANT shallow sweep — not a clean pass; record it as + such (the astral planes are part of the mandated complement, so a genuine run + yields `astral=y`). **Caveat arm (no-runnable-artifact)**: when the unit is a COMPILED-language artifact you cannot run black-box (your scratch allowlist grants `node` / `python3` but, for Rust/Go, only `cargo test` / `go test` — no `rustc` / `cargo run` / `go run` / diff --git a/skills/impl/SKILL.md b/skills/impl/SKILL.md index 4e17371..313bc8a 100644 --- a/skills/impl/SKILL.md +++ b/skills/impl/SKILL.md @@ -128,9 +128,9 @@ Intra-impl state lives under `phases.impl.*` in `{ticket-dir}/phase-state.yaml`. > **CHECKPOINT**: Read `phase-state.yaml`, confirm `next_action: start-evaluator`, proceed to Step 15. Do NOT end your turn. -15. **MUST invoke the AC Evaluator agent via the Agent tool** — spawn `simple-workflow:ac-evaluator` (sonnet) by default, OR `simple-workflow:ac-evaluator-hi` (opus) when the Step 3a resolver set `EVALUATOR_MODEL == opus` (M5, v8.3.0+; the per-spawn `model:` override is rejected by the Agent JSONSchema, so the model is selected by which agent file is spawned — `agents/ac-evaluator-hi.md` is byte-identical to `ac-evaluator` except its `name:` and `model:` frontmatter lines). Both agent files honour the identical spawn-prompt contract (fields a-l, `## Bound capabilities (per AC)`, `Oracle verification:`). **NEVER self-assess AC compliance** — Evaluator reads code via `git diff` and renders PASS/FAIL (Ticket 002 failure mode L554-L559). Fail immediately if not invocable. +15. **MUST invoke the AC Evaluator agent via the Agent tool** — spawn `simple-workflow:ac-evaluator` (sonnet) by default, OR `simple-workflow:ac-evaluator-hi` (opus) when the Step 3a resolver set `EVALUATOR_MODEL == opus` (M5, v8.3.0+; the per-spawn `model:` override is rejected by the Agent JSONSchema, so the model is selected by which agent file is spawned — `agents/ac-evaluator-hi.md` is byte-identical to `ac-evaluator` except its `name:` and `model:` frontmatter lines). Both agent files honour the identical spawn-prompt contract (fields a-m, `## Bound capabilities (per AC)`, `Oracle verification:`, `Accept-set conformance:`). **NEVER self-assess AC compliance** — Evaluator reads code via `git diff` and renders PASS/FAIL (Ticket 002 failure mode L554-L559). Fail immediately if not invocable. - **Deterministic capability handoff (per-AC)**: Before constructing the prompt, `Read` `{ticket-dir}/ticket.md` (or the resolved ticket path) and reuse the per-AC bound-capability list extracted from the `### Capabilities` section in Step 13. Inline that mapping verbatim into the spawn prompt under `## Bound capabilities (per AC)` so the Evaluator picks its evidence-gathering capability from the recorded binding instead of re-deriving relevance from the AC text. When the ticket lacks `### Capabilities` (older ticket), fall back to the present ad-hoc path: emit `## Bound capabilities (per AC): (none recorded — ticket pre-dates Gate 6)` and let `ac-evaluator` proceed on its in-house verification methods. The Evaluator MUST treat the recorded binding as authoritative — when an AC carries a bound capability, code inspection alone is not sufficient evidence to PASS that AC; the Evaluator MUST gather live evidence via the bound Skill (or rewrite the AC as static via the planner's `#### Capability Gaps` rule, which is upstream). **Oracle independence (computational ACs, v8.2.0+)**: for any AC whose PASS/FAIL hinges on a computed numeric/algorithmic value, the Evaluator MUST (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`) derive ≥1 expected value from an oracle independent of the code and compare the implementation's RAW (pre-rounding) output with an explicit tolerance — a green project suite is necessary but not sufficient. This applies in single, partition, and multi-verifier modes alike. Inline the `oracle_verification` value resolved at Step 3a into the Evaluator spawn prompt as the field `Oracle verification: {auto|off}` (alongside the `## Bound capabilities (per AC)` handoff) so the Evaluator honours the kill switch deterministically from the prompt rather than reading the policy from disk; when `off`, the Evaluator skips the oracle-independence requirement (pre-v8.2.0 path). **Independent evidence (Gate 8 behavioral ACs, M1, v8.3.0+)**: for every behavioral AC (PASS/FAIL hinges on observable runtime behaviour), the Evaluator MUST (per `agents/ac-evaluator.md` `## Independent Evidence (behavioral ACs)`) establish the AC via at least one evidence channel independent of the implementation's own internals (EC-ORACLE / EC-DIFFERENTIAL / EC-PROPERTY / EC-RUNTIME per `skills/impl/references/evidence-channels.md`), honouring the resolved `EVIDENCE_FLOOR`. Inline the `EVIDENCE_FLOOR` resolved at Step 3a into the Evaluator spawn prompt as the field `Evidence floor: {EC-STATIC+natural|+1-independent|>=2-independent}` (alongside the `Oracle verification: {auto|off}` and `## Bound capabilities (per AC)` handoffs) so the Evaluator honours the floor and the `constraints.independent_evidence` kill switch deterministically from the prompt rather than from disk; when the floor resolves `off`, the Evaluator skips the evidence-floor requirement (pre-v8.3.0 path) but the always-on Gate 7 oracle check still applies when `oracle_verification` is active. Oracle independence (the EC-ORACLE sub-case for computational ACs) is unchanged. **Per-AC oracle audit (M8, v8.4.0+)**: the Evaluator emits one `[ORACLE-AUDIT] ac={id} oracle-kind={first-principles|sibling|hand|none} channels={N} boundary-quantified={y|n}` line per computational / behavioral AC to stderr (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`), surfacing which oracle-kind backed each verdict and how many independent channels it exercised; this observability is UNCONDITIONAL — it emits even under `independent_evidence: off` / `oracle_verification: off` (recording `oracle-kind=none` on the degraded path). **Failure-class panel (v8.4.0+)**: the orchestrator resolves `constraints.eval_panel` (auto|on|off) at Step 3a — `auto` activates the default failure-class eval panel for a ticket touching `>=2` source units OR carrying `>=1` behavioral AC, `on` forces it, `off` disables it (byte-for-byte revert to the single all-purpose pass) — and inlines the resolution into the spawn prompt as field `m` (`--- panel: standard lenses=L-CORRECTNESS,[,] ---`). At `standard` the SINGLE evaluator runs the named lenses SEQUENTIALLY (no added spawn — size gates depth only); at `exhaustive` the panel emphasis rides the three lens spawns. The evaluator emits one `[EVAL-PANEL] lenses={comma-list} mode={single|exhaustive}` line per invocation (M8 observability, beside `[ORACLE-AUDIT]`) UNLESS the panel resolved `off`, and the orchestrator emits `[EVAL-PANEL-MODE] mode={auto|on|off} active={y|n} lenses={N} spawns={1|3} reason={multi-unit|behavioral-ac|forced|trivial|off}` at Step 3a. See [ac-evaluator-orchestration.md](references/ac-evaluator-orchestration.md) `## Default failure-class panel` and `agents/ac-evaluator.md` `## Failure-class panel (default lenses)`. + **Deterministic capability handoff (per-AC)**: Before constructing the prompt, `Read` `{ticket-dir}/ticket.md` (or the resolved ticket path) and reuse the per-AC bound-capability list extracted from the `### Capabilities` section in Step 13. Inline that mapping verbatim into the spawn prompt under `## Bound capabilities (per AC)` so the Evaluator picks its evidence-gathering capability from the recorded binding instead of re-deriving relevance from the AC text. When the ticket lacks `### Capabilities` (older ticket), fall back to the present ad-hoc path: emit `## Bound capabilities (per AC): (none recorded — ticket pre-dates Gate 6)` and let `ac-evaluator` proceed on its in-house verification methods. The Evaluator MUST treat the recorded binding as authoritative — when an AC carries a bound capability, code inspection alone is not sufficient evidence to PASS that AC; the Evaluator MUST gather live evidence via the bound Skill (or rewrite the AC as static via the planner's `#### Capability Gaps` rule, which is upstream). **Oracle independence (computational ACs, v8.2.0+)**: for any AC whose PASS/FAIL hinges on a computed numeric/algorithmic value, the Evaluator MUST (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`) derive ≥1 expected value from an oracle independent of the code and compare the implementation's RAW (pre-rounding) output with an explicit tolerance — a green project suite is necessary but not sufficient. This applies in single, partition, and multi-verifier modes alike. Inline the `oracle_verification` value resolved at Step 3a into the Evaluator spawn prompt as the field `Oracle verification: {auto|off}` (alongside the `## Bound capabilities (per AC)` handoff) so the Evaluator honours the kill switch deterministically from the prompt rather than reading the policy from disk; when `off`, the Evaluator skips the oracle-independence requirement (pre-v8.2.0 path). **Independent evidence (Gate 8 behavioral ACs, M1, v8.3.0+)**: for every behavioral AC (PASS/FAIL hinges on observable runtime behaviour), the Evaluator MUST (per `agents/ac-evaluator.md` `## Independent Evidence (behavioral ACs)`) establish the AC via at least one evidence channel independent of the implementation's own internals (EC-ORACLE / EC-DIFFERENTIAL / EC-PROPERTY / EC-RUNTIME per `skills/impl/references/evidence-channels.md`), honouring the resolved `EVIDENCE_FLOOR`. Inline the `EVIDENCE_FLOOR` resolved at Step 3a into the Evaluator spawn prompt as the field `Evidence floor: {EC-STATIC+natural|+1-independent|>=2-independent}` (alongside the `Oracle verification: {auto|off}` and `## Bound capabilities (per AC)` handoffs) so the Evaluator honours the floor and the `constraints.independent_evidence` kill switch deterministically from the prompt rather than from disk; when the floor resolves `off`, the Evaluator skips the evidence-floor requirement (pre-v8.3.0 path) but the always-on Gate 7 oracle check still applies when `oracle_verification` is active. Oracle independence (the EC-ORACLE sub-case for computational ACs) is unchanged. **Per-AC oracle audit (M8, v8.4.0+)**: the Evaluator emits one `[ORACLE-AUDIT] ac={id} oracle-kind={first-principles|sibling|hand|none} channels={N} boundary-quantified={y|n}` line per computational / behavioral AC to stderr (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`), surfacing which oracle-kind backed each verdict and how many independent channels it exercised; this observability is UNCONDITIONAL — it emits even under `independent_evidence: off` / `oracle_verification: off` (recording `oracle-kind=none` on the degraded path). **Failure-class panel (v8.4.0+)**: the orchestrator resolves `constraints.eval_panel` (auto|on|off) at Step 3a — `auto` activates the default failure-class eval panel for a ticket touching `>=2` source units OR carrying `>=1` behavioral AC, `on` forces it, `off` disables it (byte-for-byte revert to the single all-purpose pass) — and inlines the resolution into the spawn prompt as field `m` (`--- panel: standard lenses=L-CORRECTNESS,[,] ---`). At `standard` the SINGLE evaluator runs the named lenses SEQUENTIALLY (no added spawn — size gates depth only); at `exhaustive` the panel emphasis rides the three lens spawns. The evaluator emits one `[EVAL-PANEL] lenses={comma-list} mode={single|exhaustive}` line per invocation (M8 observability, beside `[ORACLE-AUDIT]`) UNLESS the panel resolved `off`, and the orchestrator emits `[EVAL-PANEL-MODE] mode={auto|on|off} active={y|n} lenses={N} spawns={1|3} reason={multi-unit|behavioral-ac|forced|trivial|off}` at Step 3a. See [ac-evaluator-orchestration.md](references/ac-evaluator-orchestration.md) `## Default failure-class panel` and `agents/ac-evaluator.md` `## Failure-class panel (default lenses)`. **Accept-set conformance handoff (`accept_set_conformance`, v8.5.0+):** read `constraints.accept_set_conformance` from the ticket policy (absent file / field / unknown → `auto`, active). When it is not `off`, compute a per-AC deterministic trigger so the evaluator never re-derives the obligation itself (dogfood46: in-context recognition was non-uniform — a delegating-sibling ticket stood the sweep down): for each AC, mark it triggered when EITHER (1) a case-insensitive lexical scan of the AC text, the ticket's `### Implementation Notes`, and the cited docstring / `--help` / schema matches any of the words `strict`, `canonical`, `lossless`, `limit`; OR (2) the AC's external-input boundary belongs to a `shared_input_boundary` sibling family (the same signal the planner / ticket-evaluator spawns forward — a shared-input sibling triggers even with none of those words present, the "delegation is NOT an automatic n/a" case). Inline the result into the Evaluator spawn prompt as the single field `Accept-set conformance: {auto|off} triggered-on={comma-list of triggered AC-ids, or (none)}` (alongside `Oracle verification:` / `Evidence floor:` / `Selfdoc verification:`), and emit `[ACCEPT-SET-TRIGGER] mode={auto|off} triggered={ids|none} basis={lexical|shared-input|both|none}` to stderr. The evaluator MUST run the EXECUTED accept-set sweep for EXACTLY the `triggered-on=` ACs — the orchestrator has already done the recognition, so the evaluator does not re-decide whether to run it. Independent of `verification_depth` / `oracle_verification` / `eval_panel`. See [accept-set-conformance-harness.md](references/accept-set-conformance-harness.md). Count positive ACs (`AC_COUNT`); compute `EVALUATOR_MAX_TURNS = max(60, AC_COUNT * 4)` (field `j`; hard `maxTurns: 200` in frontmatter; e.g. `AC_COUNT = 22` → 88). diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index 11007b2..ba8bad9 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -10261,6 +10261,32 @@ assert_true \ "CT-AASC-5 (harness doc exists + wired + EC-METAMORPHIC + Grammar Card): exists ($aasc5_exists=1), linked from ac-evaluator ($aasc5_link_acev>=1) + -hi ($aasc5_link_hi>=1) + evidence-channels ($aasc5_link_ech>=1), EC-METAMORPHIC in evidence-channels ($aasc5_ecmeta>=1), Grammar Card in doc ($aasc5_grammar>=1)" \ "$aasc5_result" +# CT-AASC-6 (deterministic accept-set trigger: orchestrator computes + inlines triggered-on=, both twins read it; v8.5.0+). +# LOAD-BEARING per charter section H: moves the strict/canonical/lossless/limit + shared_input_boundary recognition out of +# the evaluator (dogfood46 non-uniformity) into a deterministic Step-15 computation inlined as triggered-on=. Net-new tokens +# 'triggered-on=' and (in SKILL.md) 'accept_set_conformance' are HEAD=0 (RED-first; bare 'triggered='/'accept-set' pre-exist +# from STEP 5 and are NOT what this pins). Twins byte-identical. +aasc6_skill_constraint=$(grep -cF 'accept_set_conformance' "$IMPL_EV" || true) +aasc6_skill_field=$(grep -cF 'triggered-on=' "$IMPL_EV" || true) +aasc6_skill_emit=$(grep -cF '[ACCEPT-SET-TRIGGER]' "$IMPL_EV" || true) +aasc6_acev_read=$(grep -cF 'triggered-on=' "$ACEV_EV" || true) +aasc6_hi_read=$(grep -cF 'triggered-on=' "$ACEVHI_EV" || true) +aasc6_result="false" +if [ "$aasc6_skill_constraint" -ge 1 ] && [ "$aasc6_skill_field" -ge 1 ] && [ "$aasc6_skill_emit" -ge 1 ] && [ "$aasc6_acev_read" -ge 1 ] && [ "$aasc6_hi_read" -ge 1 ]; then aasc6_result="true"; fi +assert_true "CT-AASC-6 (deterministic trigger triggered-on= computed+inlined+read): SKILL constraint ($aasc6_skill_constraint>=1) field ($aasc6_skill_field>=1) emit ($aasc6_skill_emit>=1) + ac-evaluator reads ($aasc6_acev_read>=1) + -hi reads ($aasc6_hi_read>=1)" "$aasc6_result" + +# CT-AASC-7 (black-box no-impl-peek + self-incriminating shallow-sweep record, both twins; v8.5.0+). +# LOAD-BEARING per charter section H: dogfood46 skipped astral via an implementation-peek and recorded astral=n as a neutral +# field. Pins the two GENUINELY-NEW anti-cues (the astral/no-script/property-enumeration prose already existed in STEP 5 and +# is deliberately NOT re-pinned here to avoid accretion-pinning). Both tokens HEAD=0 (RED-first). Twins byte-identical. +aasc7_ok="true" +for aasc7_tok in 'implementation-peek' 'shallow sweep'; do + aasc7_a=$(grep -cF "$aasc7_tok" "$ACEV_EV" || true) + aasc7_b=$(grep -cF "$aasc7_tok" "$ACEVHI_EV" || true) + if [ "$aasc7_a" -lt 1 ] || [ "$aasc7_b" -lt 1 ]; then aasc7_ok="false"; echo " CT-AASC-7 missing twin token [$aasc7_tok] acev=$aasc7_a hi=$aasc7_b" >&2; fi +done +assert_true "CT-AASC-7 (black-box no-impl-peek + shallow-sweep self-incrimination, both twins): implementation-peek + shallow sweep present in ac-evaluator AND -hi ($aasc7_ok)" "$aasc7_ok" + echo "" From 25fab84e4cbc2047b4b436cb3f4a7fced4b133ec Mon Sep 17 00:00:00 2001 From: aimsise Date: Thu, 18 Jun 2026 13:35:08 +0900 Subject: [PATCH 08/15] docs(readme): add glanceable + detailed brief chain=on flow diagrams (light/dark) Visualize the default /brief chain=on path below the README opening paragraph, tuned for how the README actually renders on GitHub: - inline: a short, large-text OVERVIEW (phases + the per-ticket loop and the in-/impl verify loop) that stays readable at GitHub's ~860px width - collapsed under
: the FULL flow with every skill, agent, hook, inter-phase handoff/harness note, and a harness-mechanism summary - both served via + prefers-color-scheme so they adapt to GitHub light/dark mode instead of glaring as a white block Loops are named PER-TICKET LOOP / VERIFY LOOP (not OUTER/INNER) to avoid colliding with loop engineering's scheduler 'outer' loop, which the plugin delegates to Claude Code (/loop, /schedule). Diagrams are Pillow-generated; the generators are committed beside the PNGs for regeneration. Glyphs are restricted to ASCII + safe arrows and on-line labels use opaque backgrounds, so no tofu boxes or overlaps. Verified by rendering at 860px (light + dark); path-consistency 144/144. Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 23 ++ docs/brief-chain-flow-dark.png | Bin 0 -> 505404 bytes docs/brief-chain-flow.png | Bin 0 -> 506364 bytes docs/brief-chain-overview-dark.png | Bin 0 -> 112676 bytes docs/brief-chain-overview.png | Bin 0 -> 112246 bytes docs/gen-brief-chain-flow.py | 477 +++++++++++++++++++++++++++++ docs/gen-brief-chain-overview.py | 244 +++++++++++++++ 7 files changed, 744 insertions(+) create mode 100644 docs/brief-chain-flow-dark.png create mode 100644 docs/brief-chain-flow.png create mode 100644 docs/brief-chain-overview-dark.png create mode 100644 docs/brief-chain-overview.png create mode 100644 docs/gen-brief-chain-flow.py create mode 100644 docs/gen-brief-chain-overview.py diff --git a/README.md b/README.md index ff1d5de..22c482c 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,29 @@ The [Claude Code](https://docs.anthropic.com/en/docs/claude-code) plugin for **e Built on a **Harness for long-running AI agents** that brings *loop engineering* to the development lifecycle — a rigorous, closed *inner loop* (act → verify → correct → continue) bounded by contract stopping conditions — with strict context management, information firewalls, and a cross-session knowledge base that improves accuracy with every completed ticket. +

+ + + How /brief chain=on runs: /brief then /create-ticket then /autopilot, then a per-ticket loop of /scout, /impl (with an inner verify loop) and /ship, ending in pull requests + +
+ The default /brief chain=on flow at a glance: skills (blue) drive subagents (green); the per-ticket loop and the in-/impl verify loop are red; lifecycle hooks drive and guard every step. The full flow — agents · hooks · harness — is in the collapsible below. +

+ +
+Full flow — every skill, agent, hook & harness mechanism + +

+ + + Detailed /brief chain=on execution flow: each phase's work, subagents and artifacts; the handoff and harness applied between phases; the lifecycle hooks; the per-ticket and verify loops; and a summary of the harness mechanisms + +

+ +Regenerate: python3 docs/gen-brief-chain-overview.py · python3 docs/gen-brief-chain-flow.py + +
+ ## Prerequisites - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI installed and authenticated diff --git a/docs/brief-chain-flow-dark.png b/docs/brief-chain-flow-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1c8edd6323d853d6d222f3edc6d5d451524b331f GIT binary patch literal 505404 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�WAjsO^N?fz-u<`yIjK3rz}_+d}F{nXxlpm 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%0Dm`owjP|ak9LcDE5diPW$BQRrt0}yuOruE4_#+ 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

d4MjX(JUw*;-8L0VhtK20LAp|4 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

V8^(aPK@HtN#gb35OEGb1byV?gLIX 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 X8cNf7rq?Ea$eD`5gZqVYrUCy0&q$qs literal 0 HcmV?d00001 diff --git a/docs/brief-chain-overview-dark.png b/docs/brief-chain-overview-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e376d9a7b33960db31d5f9f05650fb1d1417bb GIT binary patch literal 112676 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 z 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�bxke|%C3A~^}0iqx$ZgoN0iZeTb%X-bOL#eW4^jIWRCJ-&i`wpl%k zB?Fxu0qyMQmud^`3)vQ4CYnBrTLSG^L(+BXm%X{1z>x)U3INZWTbh^{=nb{D%LH=N zPEzyT`MmTy&x-5;V~J-rkbQ-I^5f0J298wv?=GBYeIsIWQuJ=oshelojY{AID9M(R zv$i;hHr-$=Ds;~mvSzT%^Ogx^2(tT}u0nI=1gb86o7=Cg?>&Y!AF#9(Gte zFp;w@;#;6<`)(Akn3+s;O-a9o^56JfrNH-6hwu3t|DYEtCW`*FAQe~m5vInZhJqYW zN4UR{X*B>dw4acUsZs{Z)Vb819>!nYEZHwEo;q8(vs15IR0OMcHw95Ulcg1Ledpmi z9Ij0XSKZn6L6H4hxxElwCK)WTVHS{kUW^?TazC$39<_!W-^QjVJE)ijvk_!1fSg-w zI~#T8f_xKQup>EwZOy$^=3=(M_L$!2+nmDPXwJvtS9Uz#pW46Oy;jhu@l53-$=3}4 zg>zPLV7%ctA5Ql<-DlqM<5jPv_x=c!8gtqE`CLJatX?Yy?)ec@w%6+KGoR*Il|Ef9 zi;cOTpJKvkCb}u_b(0lL;M*EQ00*PNZxAHOVYSt9PJp~KkW~lph~~s}Z~IcZ$D(P{ z58gik;oN4j>Jyt2;0n0oaDhl^p05vj%;4~uAw57{%vZJRb*y-;MZuwN`K#E8sn++AcL<3ti$o*c-6%V=FLIbq)H$jF0tZ}WAeRmKB*D4?%P)0XOK`> zkX@Zkd)G&^7Zsdb0I$@B;^DAiU5hk6obSLw3h3zKxKED1zWyTkCAG87OcF3Zef0GJ zllQBrw0)SL=CXI#48;e7y{s6V`*}bb-f@{m_2cgVW*ywyW1GRIEYdf0)j`*bB+WDy zV^EjuYJVyHvo$_P z(pNBl`J+2d1Qo}n96^4{^}B;eKYhZAYw<}Zql}^tyqkS1Ew+p;QkvdN$Ag&5GFiB5 zf9@a%pm;%TXPxz*z$r;C+sa%8HBjJV@`gvn1!SZ#fP5aZAivn* znoRk}X%}b^zIqDdg?TfJ%l=9+`QJ4viH8p%xeWR7Z#F)dbJu0&PnQ86x+|BtUz+%X zrF@GbL?IZIfq@U-OMZx|mOz-?G^fiYaP)J;ZyTkEK=^_jtMqL@WGvEH&XW@U+DJ}P3xD#pzibibEC3Q_&00iQwJ+(J2@59qK4eC|}T+(Supb+Wo zzG=jp8+|N(Yxf`-i_3<2@>yj(D3DUDjras4D1Q9w{~p)>r>l_73>!y<4B3=G6=Yo? z9;(5IdDn(lm9;%!;Jb#Fpq}wI$_6

  • g)KFfXPbwd&N$3YCxhO;C7*V3Yq1$dF74 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 literal 0 HcmV?d00001 diff --git a/docs/brief-chain-overview.png b/docs/brief-chain-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..e54961f1747a742a517a786cfbdf79664e0b4c7a GIT binary patch literal 112246 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 in README.md. Emits two files for a +dark-mode swap: + + docs/brief-chain-flow.png (light) + docs/brief-chain-flow-dark.png (dark) + +Re-generate from anywhere: python3 docs/gen-brief-chain-flow.py +Glyph rule: Arial lacks ↻ ↺ ★ ⇄ ≤ (they render as tofu boxes), so we use only +ASCII plus the safe arrows → · — × and draw loop/marker glyphs as shapes. +""" + +import os +from PIL import Image, ImageDraw, ImageFont + +# ---------------------------------------------------------------- canvas / scale +S = 2 +W, H = 1200, 2000 +HERE = os.path.dirname(os.path.abspath(__file__)) + +# ------------------------------------------------------------------------- fonts +_FONT_CANDIDATES = { + False: ["/System/Library/Fonts/Supplemental/Arial.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", "/Library/Fonts/Arial.ttf"], + True: ["/System/Library/Fonts/Supplemental/Arial Bold.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", "/Library/Fonts/Arial Bold.ttf"], +} +_font_cache = {} + + +def font(size, bold=False): + key = (round(size, 1), bold) + if key in _font_cache: + return _font_cache[key] + f = None + for path in _FONT_CANDIDATES[bold]: + if os.path.exists(path): + try: + f = ImageFont.truetype(path, int(round(size * S))) + break + except Exception: + pass + if f is None: + f = ImageFont.load_default() + _font_cache[key] = f + return f + + +def P(v): + return int(round(v * S)) + + +# ------------------------------------------------------------------------ themes +# Every name used by the drawing body is supplied per theme via globals().update, +# so the same layout renders in light or dark. Names that previously were inline +# tuples (diamond / separator / hook-name / harness-desc) are themed too, since a +# hard-coded dark brown would vanish on a dark background. +LIGHT = { + "BG": (255, 255, 255), "LABELBG": (255, 255, 255), + "INK": (17, 24, 39), "GRAY": (107, 114, 128), "LINE": (71, 85, 105), "SLATE": (71, 85, 105), + "SKILL_FILL": (219, 234, 254), "SKILL_BD": (37, 99, 235), "SKILL_TX": (30, 58, 138), + "AGENT_FILL": (220, 252, 231), "AGENT_BD": (22, 163, 74), "AGENT_TX": (20, 83, 45), + "HOOK_FILL": (255, 250, 235), "HOOK_BD": (217, 119, 6), "HOOK_TX": (124, 65, 16), + "IO_FILL": (241, 245, 249), "IO_BD": (100, 116, 139), "IO_TX": (51, 65, 85), + "PR_FILL": (237, 233, 254), "PR_BD": (124, 58, 237), "PR_TX": (76, 29, 149), + "TRANS_FILL": (248, 250, 252), "TRANS_BD": (203, 213, 225), + "HARN_FILL": (245, 243, 255), "HARN_BD": (124, 58, 237), "HARN_TX": (67, 56, 202), + "LOOP": (220, 38, 38), + "DIAMOND_FILL": (254, 249, 195), "DIAMOND_TX": (133, 77, 14), + "SEP": (229, 210, 170), "HOOKNAME": (146, 64, 14), "HARNDESC": (55, 48, 110), +} +DARK = { + "BG": (13, 17, 23), "LABELBG": (13, 17, 23), + "INK": (230, 237, 243), "GRAY": (148, 158, 170), "LINE": (139, 148, 158), "SLATE": (162, 172, 186), + "SKILL_FILL": (23, 37, 64), "SKILL_BD": (96, 165, 250), "SKILL_TX": (191, 219, 254), + "AGENT_FILL": (18, 46, 33), "AGENT_BD": (74, 222, 128), "AGENT_TX": (187, 247, 208), + "HOOK_FILL": (38, 32, 17), "HOOK_BD": (217, 160, 40), "HOOK_TX": (252, 211, 77), + "IO_FILL": (30, 41, 59), "IO_BD": (113, 128, 150), "IO_TX": (203, 213, 225), + "PR_FILL": (45, 40, 74), "PR_BD": (167, 139, 250), "PR_TX": (221, 214, 254), + "TRANS_FILL": (30, 41, 59), "TRANS_BD": (71, 85, 105), + "HARN_FILL": (35, 31, 64), "HARN_BD": (139, 109, 240), "HARN_TX": (199, 191, 247), + "LOOP": (248, 113, 113), + "DIAMOND_FILL": (60, 52, 20), "DIAMOND_TX": (253, 224, 71), + "SEP": (70, 60, 35), "HOOKNAME": (252, 211, 77), "HARNDESC": (199, 191, 247), +} + +d = None # set per build() + + +# ----------------------------------------------------------------------- helpers +# Helpers read theme colours from globals at CALL time (no colour default args, so +# nothing binds to a single theme at def time). +def box(x0, y0, x1, y1, fill, outline, width=2, radius=10): + d.rounded_rectangle([P(x0), P(y0), P(x1), P(y1)], radius=P(radius), + fill=fill, outline=outline, width=P(width)) + + +def dashed_line(x0, y0, x1, y1, color, width=2, dash=9, gap=6): + import math + dx, dy = x1 - x0, y1 - y0 + dist = math.hypot(dx, dy) + if dist == 0: + return + ux, uy = dx / dist, dy / dist + pos = 0.0 + while pos < dist: + seg = min(dash, dist - pos) + d.line([P(x0 + ux * pos), P(y0 + uy * pos), + P(x0 + ux * (pos + seg)), P(y0 + uy * (pos + seg))], fill=color, width=P(width)) + pos += dash + gap + + +def dashed_rect(x0, y0, x1, y1, color, width=2, dash=10, gap=6): + dashed_line(x0, y0, x1, y0, color, width, dash, gap) + dashed_line(x1, y0, x1, y1, color, width, dash, gap) + dashed_line(x1, y1, x0, y1, color, width, dash, gap) + dashed_line(x0, y1, x0, y0, color, width, dash, gap) + + +def text(x, y, s, size=12.5, color=None, bold=False, anchor="lm"): + d.text((P(x), P(y)), s, font=font(size, bold), fill=color if color is not None else INK, anchor=anchor) + + +def text_bg(x, y, s, size=10.5, color=None, bold=False, bg=None, padx=4, pady=1): + f = font(size, bold) + w = f.getlength(s) / S + h = size * 1.25 + d.rectangle([P(x - w / 2 - padx), P(y - h / 2 - pady), + P(x + w / 2 + padx), P(y + h / 2 + pady)], fill=bg if bg is not None else LABELBG) + d.text((P(x), P(y)), s, font=f, fill=color if color is not None else INK, anchor="mm") + + +def rich(x, y, segs, size=12.5): + cx = x + for t, color, bold in segs: + f = font(size, bold) + d.text((P(cx), P(y)), t, font=f, fill=color, anchor="lm") + cx += f.getlength(t) / S + return cx + + +def arrowhead(x, y, direction, size=7, color=None): + color = color if color is not None else LINE + if direction == "down": + pts = [(x, y), (x - size, y - size * 1.5), (x + size, y - size * 1.5)] + elif direction == "up": + pts = [(x, y), (x - size, y + size * 1.5), (x + size, y + size * 1.5)] + elif direction == "left": + pts = [(x, y), (x + size * 1.5, y - size), (x + size * 1.5, y + size)] + else: + pts = [(x, y), (x - size * 1.5, y - size), (x - size * 1.5, y + size)] + d.polygon([(P(a), P(b)) for a, b in pts], fill=color) + + +def red_dot(x, y, r=4.5, color=None): + d.ellipse([P(x - r), P(y - r), P(x + r), P(y + r)], fill=color if color is not None else LOOP) + + +# -------------------------------------------------------------------- geometry +MX0, MX1 = 60, 642 +MCX = (MX0 + MX1) / 2 +HX0, HX1 = 694, 1162 + + +def build(theme, out): + globals().update(theme) + global d + img = Image.new("RGB", (W * S, H * S), BG) + d = ImageDraw.Draw(img) + + def trans(y0, lines): + n = len(lines) + gap = {1: 56, 2: 70, 3: 86}[n] + y1 = y0 + gap + d.line([P(MCX), P(y0), P(MCX), P(y1)], fill=LINE, width=P(2)) + arrowhead(MCX, y1, "down") + ph = 16 + 17 * n + pw = max(font(10.5).getlength(s) / S for s in lines) + 30 + cy = (y0 + y1) / 2 + box(MCX - pw / 2, cy - ph / 2, MCX + pw / 2, cy + ph / 2, TRANS_FILL, TRANS_BD, width=1.3, radius=9) + ty = cy - (n - 1) * 8.5 + for s in lines: + text(MCX, ty, s, size=10.5, color=SLATE, anchor="mm") + ty += 17 + return y1 + + # header + text(40, 34, "/brief chain=on — execution flow", size=24, bold=True, color=INK) + text(40, 64, "what each phase does, what passes between phases, which harness applies — and where the two loops are", + size=12.5, color=GRAY) + lx = 40 + ly = 92 + + def swatch(x, fill, bd, label, dashed=False): + if dashed: + dashed_line(x, ly, x + 22, ly, LOOP, 2.6, 5, 3) + else: + d.rounded_rectangle([P(x), P(ly - 6), P(x + 20), P(ly + 7)], radius=P(3), + fill=fill, outline=bd, width=P(1.6)) + tx = x + (28 if not dashed else 30) + text(tx, ly, label, size=11, color=INK) + return tx + font(11).getlength(label) / S + 24 + + lx = swatch(lx, SKILL_FILL, SKILL_BD, "skill") + lx = swatch(lx, AGENT_FILL, AGENT_BD, "agent (subagent)") + lx = swatch(lx, HOOK_FILL, HOOK_BD, "hook") + lx = swatch(lx, TRANS_FILL, TRANS_BD, "handoff + harness") + lx = swatch(lx, None, None, "loop / iterates", dashed=True) + + # 1. user IO + box(MX0, 126, MX1, 172, IO_FILL, IO_BD) + text(MCX, 149, 'User types /brief "" (chain=on is the default)', + size=12.5, color=IO_TX, anchor="mm") + d.line([P(MCX), P(172), P(MCX), P(204)], fill=LINE, width=P(2)) + arrowhead(MCX, 204, "down") + + # 2. /brief + B0 = 204 + box(MX0, B0, MX1, B0 + 122, SKILL_FILL, SKILL_BD) + text(MX0 + 16, B0 + 20, "/brief", size=15.5, bold=True, color=SKILL_TX) + text(MX0 + 70, B0 + 21, "· skill", size=11.5, color=GRAY) + rich(MX0 + 16, B0 + 48, [("spawns ", INK, False), ("researcher", AGENT_TX, True), + (" (subagent) — quick codebase pre-scan", INK, False)], size=12) + text(MX0 + 16, B0 + 70, "runs an interactive Socratic interview to capture requirements", size=12, color=INK) + rich(MX0 + 16, B0 + 94, [("writes ", INK, False), ("brief.md", IO_TX, True), + (" + ", GRAY, False), ("autopilot-policy.yaml", IO_TX, True)], size=12) + + y = trans(B0 + 122, ["hands off brief.md · on chain=on, auto-kick.yaml arms the", + "Stop-hook chain so the hand-off cannot stall"]) + + # 3. /create-ticket + C0 = y + box(MX0, C0, MX1, C0 + 150, SKILL_FILL, SKILL_BD) + text(MX0 + 16, C0 + 20, "/create-ticket", size=15.5, bold=True, color=SKILL_TX) + text(MX0 + 142, C0 + 21, "· skill", size=11.5, color=GRAY) + text(MX0 + 16, C0 + 48, "splits the scope into N tickets through independent layers (Agent tool):", size=12, color=INK) + rich(MX0 + 16, C0 + 72, [("researcher", AGENT_TX, True), (" → ", GRAY, False), + ("decomposer", AGENT_TX, True), (" → ", GRAY, False), + ("planner", AGENT_TX, True), (" → ", GRAY, False), + ("ticket-evaluator", AGENT_TX, True)], size=12) + rich(MX0 + 16, C0 + 98, [("quality gate FAIL → ", INK, False), ("planner", AGENT_TX, True), + (" retry ×2 ", INK, False), ("(loop)", LOOP, True)], size=12) + rich(MX0 + 16, C0 + 124, [("writes ", INK, False), ("ticket.md ×N + split-plan.md", IO_TX, True)], size=12) + + y = trans(C0 + 150, ["split-plan.md is the single source of truth · one", + "phase-state.yaml is created per ticket (the state machine)"]) + + # 4. /autopilot + A0 = y + box(MX0, A0, MX1, A0 + 84, SKILL_FILL, SKILL_BD) + text(MX0 + 16, A0 + 22, "/autopilot", size=15.5, bold=True, color=SKILL_TX) + text(MX0 + 104, A0 + 23, "· skill — orchestrator", size=11.5, color=GRAY) + text(MX0 + 16, A0 + 52, "runs each ticket in dependency (topological) order", size=12, color=INK) + + y = trans(A0 + 84, ["Stop hook autopilot-continue re-injects a \"continue\" prompt every", + "turn — this is what DRIVES the loop; state files make the run resumable"]) + + # PER-TICKET LOOP box + OLY0 = y + 4 + OLX0, OLX1 = 40, 666 + text(OLX0 + 16, OLY0 + 18, "PER-TICKET LOOP — one pass per ticket", size=13, bold=True, color=LOOP) + text(OLX0 + 16, OLY0 + 38, "(auto-/compact resets the context window at every ticket boundary)", size=10.5, color=LOOP) + + SX0, SX1 = 64, 638 + SCX = (SX0 + SX1) / 2 + + # 5. /scout + S0 = OLY0 + 60 + box(SX0, S0, SX1, S0 + 118, SKILL_FILL, SKILL_BD) + text(SX0 + 14, S0 + 20, "/scout", size=14.5, bold=True, color=SKILL_TX) + text(SX0 + 76, S0 + 21, "· skill (thin orchestrator) — chains two sub-skills:", size=11, color=GRAY) + rich(SX0 + 14, S0 + 50, [("/investigate", SKILL_TX, True), (" → ", GRAY, False), + ("researcher", AGENT_TX, True), (" → ", GRAY, False), + ("investigation.md", IO_TX, True)], size=12) + rich(SX0 + 14, S0 + 76, [("/plan2doc", SKILL_TX, True), (" → ", GRAY, False), + ("planner", AGENT_TX, True), (" (size-routed) → ", GRAY, False), + ("plan.md", IO_TX, True)], size=12) + + y = trans(S0 + 118, ["investigation.md + plan.md land on disk · the plan's Acceptance", + "Criteria become the FIXED rubric for the evaluator (information firewall)"]) + + # 6. /impl + I0 = y + IMPL_H = 268 + box(SX0, I0, SX1, I0 + IMPL_H, SKILL_FILL, SKILL_BD) + text(SX0 + 14, I0 + 20, "/impl", size=14.5, bold=True, color=SKILL_TX) + text(SX0 + 64, I0 + 21, "· skill — runs the Generator / Evaluator loop, then audits", size=11, color=GRAY) + + ILY0 = I0 + 40 + ILY1 = ILY0 + 132 + dashed_rect(SX0 + 18, ILY0, SX1 - 18, ILY1, LOOP, width=2, dash=8, gap=5) + text(SX0 + 30, ILY0 + 16, "VERIFY LOOP — max 9 rounds (default)", size=10.5, bold=True, color=LOOP) + gA0, gA1 = SX0 + 34, SX0 + 280 + eA0, eA1 = SX1 - 280, SX1 - 34 + gby0, gby1 = ILY0 + 36, ILY0 + 96 + box(gA0, gby0, gA1, gby1, AGENT_FILL, AGENT_BD, radius=8) + text((gA0 + gA1) / 2, gby0 + 22, "implementer", size=12.5, bold=True, color=AGENT_TX, anchor="mm") + text((gA0 + gA1) / 2, gby0 + 42, "(Generator) writes code", size=10, color=AGENT_TX, anchor="mm") + box(eA0, gby0, eA1, gby1, AGENT_FILL, AGENT_BD, radius=8) + text((eA0 + eA1) / 2, gby0 + 22, "ac-evaluator", size=12.5, bold=True, color=AGENT_TX, anchor="mm") + text((eA0 + eA1) / 2, gby0 + 42, "(Evaluator) per-AC verdict", size=10, color=AGENT_TX, anchor="mm") + fy = (gby0 + gby1) / 2 + d.line([P(gA1), P(fy), P(eA0), P(fy)], fill=LINE, width=P(2.4)) + arrowhead(eA0, fy, "right") + text_bg((gA1 + eA0) / 2, fy - 14, "verify", size=10, color=GRAY) + mid = (gA0 + eA1) / 2 + gcx = (gA0 + gA1) / 2 + ecx = (eA0 + eA1) / 2 + by = gby1 + 16 + dashed_line(ecx, gby1, ecx, by, LOOP, 2, 6, 4) + dashed_line(ecx, by, gcx, by, LOOP, 2, 6, 4) + dashed_line(gcx, by, gcx, gby1, LOOP, 2, 6, 4) + arrowhead(gcx, gby1 + 2, "up", color=LOOP) + text_bg(mid, by, "FAIL → next round", size=10.5, color=LOOP, bold=True) + + rich(SX0 + 14, ILY1 + 22, [("on ", INK, False), ("PASS", AGENT_TX, True), (" → ", GRAY, False), + ("/audit", SKILL_TX, True), + (" (skill) spawns three reviewers in parallel:", INK, False)], size=12) + ay0 = ILY1 + 38 + ay1 = ay0 + 48 + aw = (SX1 - SX0 - 28 - 2 * 14) / 3 + for i, (nm, sub) in enumerate([("code-reviewer", None), ("security-scanner", None), + ("doc-verifier *", "(conditional)")]): + ax0 = SX0 + 14 + i * (aw + 14) + box(ax0, ay0, ax0 + aw, ay1, AGENT_FILL, AGENT_BD, radius=8) + if sub: + text(ax0 + aw / 2, ay0 + 18, nm, size=11, bold=True, color=AGENT_TX, anchor="mm") + text(ax0 + aw / 2, ay0 + 34, sub, size=9, color=AGENT_TX, anchor="mm") + else: + text(ax0 + aw / 2, ay0 + 24, nm, size=11, bold=True, color=AGENT_TX, anchor="mm") + + y = trans(I0 + IMPL_H, ["subagents return < 500-token summaries; full artifacts stay on", + "disk (context conservation) — the orchestrator window stays lean"]) + + # 7. /ship + SH0 = y + box(SX0, SH0, SX1, SH0 + 122, SKILL_FILL, SKILL_BD) + text(SX0 + 14, SH0 + 20, "/ship", size=14.5, bold=True, color=SKILL_TX) + text(SX0 + 60, SH0 + 21, "· skill", size=11, color=GRAY) + rich(SX0 + 14, SH0 + 48, [("commit (", INK, False), ("git", IO_TX, True), (") → ", GRAY, False), + ("/tune", SKILL_TX, True), (" distils eval logs into the cross-session KB", INK, False)], size=12) + rich(SX0 + 14, SH0 + 72, [("push branch → open a Pull Request via ", INK, False), + ("gh", IO_TX, True)], size=12) + rich(SX0 + 14, SH0 + 96, [("move ticket → ", INK, False), ("backlog/done/", IO_TX, True)], size=12) + + # decision diamond + DCX, DCY = SCX, SH0 + 122 + 56 + d.line([P(SCX), P(SH0 + 122), P(SCX), P(DCY - 30)], fill=LINE, width=P(2)) + arrowhead(SCX, DCY - 30, "down") + d.polygon([(P(DCX), P(DCY - 28)), (P(DCX + 104), P(DCY)), + (P(DCX), P(DCY + 28)), (P(DCX - 104), P(DCY))], + fill=DIAMOND_FILL, outline=LOOP, width=P(2)) + text(DCX, DCY, "more tickets?", size=11.5, bold=True, color=DIAMOND_TX, anchor="mm") + + OLY1 = DCY + 52 + dashed_rect(OLX0, OLY0, OLX1, OLY1, LOOP, width=2.4, dash=11, gap=6) + + # yes -> loop back up to /scout + LBX = 50 + dashed_line(DCX - 104, DCY, LBX, DCY, LOOP, 2.4, 9, 6) + dashed_line(LBX, DCY, LBX, S0 + 50, LOOP, 2.4, 9, 6) + dashed_line(LBX, S0 + 50, SX0, S0 + 50, LOOP, 2.4, 9, 6) + arrowhead(SX0, S0 + 50, "right", color=LOOP) + text_bg(DCX - 150, DCY, "yes — next ticket", size=10.5, color=LOOP, bold=True) + + # no -> PR + d.line([P(SCX), P(DCY + 28), P(SCX), P(OLY1 + 46)], fill=LINE, width=P(2)) + arrowhead(SCX, OLY1 + 46, "down") + text_bg(SCX + 96, OLY1 + 24, "no (all tickets done)", size=10.5, color=GRAY) + + # PR + PR0 = OLY1 + 48 + box(MX0, PR0, MX1, PR0 + 48, PR_FILL, PR_BD) + text(MCX, PR0 + 24, "All tickets shipped → Pull Request(s) on GitHub", + size=13, bold=True, color=PR_TX, anchor="mm") + + # HOOKS lane + HY0, HY1 = 204, 1196 + box(HX0, HY0, HX1, HY1, HOOK_FILL, HOOK_BD, width=2, radius=12) + text(HX0 + 18, HY0 + 24, "Lifecycle hooks — always-on", size=14, bold=True, color=HOOK_TX) + text(HX0 + 18, HY0 + 45, "(hooks.json — fire around every tool call & every turn)", size=10, color=GRAY) + + def hgroup(yy, title): + text(HX0 + 18, yy, title, size=12, bold=True, color=HOOK_TX) + return yy + 22 + + def hitem(yy, name, desc, marker=False): + if marker: + red_dot(HX0 + 22, yy, 4.5) + rich(HX0 + 32, yy, [(name, HOOKNAME, True)], size=10.5) + if desc: + text(HX0 + 32, yy + 16, desc, size=9.5, color=GRAY) + return yy + 35 + return yy + 22 + + hy = HY0 + 78 + hy = hgroup(hy, "SessionStart") + hy = hitem(hy, "session-start.sh", "boot + resume re-inject") + hy += 8 + hy = hgroup(hy, "PreToolUse") + hy = hitem(hy, "pre-bash / write / edit-safety.sh", "PII · destructive · identity guards") + hy = hitem(hy, "pre-state-transition.sh", "block illegal status writes") + hy = hitem(hy, "pre-bash-contract-guard.sh", "block bash state-mutation") + hy = hitem(hy, "pre-next-scout-auto-compact.sh", "/compact at ticket boundary") + hy = hitem(hy, "pre-askuserquestion-guard.sh", "non-interactive gate") + hy += 8 + hy = hgroup(hy, "PreCompact") + hy = hitem(hy, "pre-compact-save.sh", "snapshot state before /compact") + hy += 8 + hy = hgroup(hy, "PostToolUse") + hy = hitem(hy, "post-phase-checkpoint.sh", "persist phase-state.yaml") + hy = hitem(hy, "post-ship-state-auto-compact.sh", "/compact safety net") + hy = hitem(hy, "post-skill-cleanup.sh", "") + hy += 8 + hy = hgroup(hy, "Stop (the loop drivers)") + ac_y = hy + hy = hitem(hy, "autopilot-continue.sh", "re-injects \"continue\" = the loop", marker=True) + hy = hitem(hy, "impl- / scout-checkpoint-guard.sh", "block premature stop mid-phase") + hy = hitem(hy, "session-stop-log.sh", "") + + hy += 12 + d.line([P(HX0 + 18), P(hy), P(HX1 - 18), P(hy)], fill=SEP, width=P(1)) + hy += 16 + text(HX0 + 18, hy, "How the hooks shape the loop", size=11.5, bold=True, color=HOOK_TX) + hy += 22 + for ln in ["• Pre-*-safety / contract / state guards vet every", + " Write / Edit / Bash before it runs.", + "• auto-compact hooks refresh the context window", + " between tickets so it never fills up.", + "• Stop hooks re-inject \"continue\" until every ticket", + " reaches backlog/done/ — that IS the per-ticket loop."]: + text(HX0 + 26, hy, ln, size=10, color=SLATE) + hy += 17 + + # connector: autopilot-continue -> PER-TICKET LOOP box + gapx = 680 + dashed_line(HX0, ac_y, gapx, ac_y, LOOP, 2.4, 8, 5) + dashed_line(gapx, ac_y, gapx, OLY0 + 26, LOOP, 2.4, 8, 5) + dashed_line(gapx, OLY0 + 26, OLX1, OLY0 + 26, LOOP, 2.4, 8, 5) + arrowhead(OLX1, OLY0 + 26, "left", color=LOOP) + text_bg(OLX0 + 470, OLY0 + 26, "Stop hook drives the loop", size=10.5, color=LOOP, bold=True) + + # HARNESS key panel + KY0 = PR0 + 84 + KY1 = KY0 + 214 + box(MX0, KY0, HX1, KY1, HARN_FILL, HARN_BD, width=2, radius=12) + text(MX0 + 18, KY0 + 24, "The harness applied across the whole run", size=14, bold=True, color=HARN_TX) + text(MX0 + 18, KY0 + 47, "Together these mechanisms ARE the plugin's closed inner loop of loop engineering — the scheduler (\"outer\") loop is delegated to Claude Code (/loop · /schedule).", + size=10.5, color=SLATE) + ky = KY0 + 76 + HARN = [ + ("Information firewall", "code authors and code judges never share a context — the Generator (implementer) and Evaluator (ac-evaluator) are separate fresh subagents, so the judge cannot be biased by the author."), + ("Context conservation", "every subagent returns a < 500-token summary; full artifacts (investigation, plan, eval rounds) live on disk; auto-/compact runs between tickets."), + ("State machine", "autopilot-state.yaml + one phase-state.yaml per ticket record every step, so any compaction, crash or /clear is resumable from the last checkpoint."), + ("Bounded closed loops", "the per-ticket loop and the verify loop (Generator/Evaluator, up to 9 rounds) stop only when the Acceptance-Criteria contract passes or a round cap is hit."), + ("Lifecycle guards", "hooks vet every Write / Edit / Bash, snapshot state before /compact, and decide continue-vs-stop on every turn."), + ] + for title, desc in HARN: + ex = rich(MX0 + 18, ky, [("• ", HARN_TX, True), (title + " — ", HARN_TX, True)], size=11) + text(ex, ky, desc, size=10.5, color=HARNDESC, anchor="lm") + ky += 27 + + text(40, KY1 + 26, "* doc-verifier runs only when a documentation / advertised-interface surface is touched.", + size=10, color=GRAY) + + img.save(out) + print("wrote", out, img.size) + + +build(LIGHT, os.path.join(HERE, "brief-chain-flow.png")) +build(DARK, os.path.join(HERE, "brief-chain-flow-dark.png")) diff --git a/docs/gen-brief-chain-overview.py b/docs/gen-brief-chain-overview.py new file mode 100644 index 0000000..b29132d --- /dev/null +++ b/docs/gen-brief-chain-overview.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 +"""Generate the glanceable `/brief chain=on` overview (light + dark). + +A short, landscape, large-text figure for the TOP of README.md — readable at +GitHub's ~860px content width without zooming. The exhaustive figure (agents, +hooks, harness) lives in docs/gen-brief-chain-flow.py and is linked/collapsed +below it. Renders two files for a dark-mode swap: + + docs/brief-chain-overview.png (light) + docs/brief-chain-overview-dark.png (dark) + +Re-generate: python3 docs/gen-brief-chain-overview.py +Glyph rule: Arial lacks ↻ ★ ⇄ ≤ — use only ASCII plus → · — ×. +""" + +import os +from PIL import Image, ImageDraw, ImageFont + +S = 2 +W, H = 960, 640 +HERE = os.path.dirname(os.path.abspath(__file__)) + +_FONTS = { + False: ["/System/Library/Fonts/Supplemental/Arial.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", "/Library/Fonts/Arial.ttf"], + True: ["/System/Library/Fonts/Supplemental/Arial Bold.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", "/Library/Fonts/Arial Bold.ttf"], +} +_fc = {} + + +def font(size, bold=False): + k = (round(size, 1), bold) + if k in _fc: + return _fc[k] + f = None + for p in _FONTS[bold]: + if os.path.exists(p): + try: + f = ImageFont.truetype(p, int(round(size * S))); break + except Exception: + pass + _fc[k] = f or ImageFont.load_default() + return _fc[k] + + +def P(v): + return int(round(v * S)) + + +LIGHT = { + "bg": (255, 255, 255), "ink": (17, 24, 39), "gray": (107, 114, 128), "line": (71, 85, 105), + "skill": ((219, 234, 254), (37, 99, 235), (30, 58, 138)), + "agent": ((220, 252, 231), (22, 163, 74), (20, 83, 45)), + "io": ((241, 245, 249), (100, 116, 139), (51, 65, 85)), + "pr": ((237, 233, 254), (124, 58, 237), (76, 29, 149)), + "loop": (220, 38, 38), "labelbg": (255, 255, 255), +} +DARK = { + "bg": (13, 17, 23), "ink": (230, 237, 243), "gray": (148, 158, 170), "line": (139, 148, 158), + "skill": ((23, 37, 64), (96, 165, 250), (191, 219, 254)), + "agent": ((18, 46, 33), (74, 222, 128), (187, 247, 208)), + "io": ((30, 41, 59), (113, 128, 150), (203, 213, 225)), + "pr": ((45, 40, 74), (167, 139, 250), (221, 214, 254)), + "loop": (248, 113, 113), "labelbg": (13, 17, 23), +} + +d = None +C = None + + +def box(x0, y0, x1, y1, role, width=2.4, radius=11): + fill, bd, _ = C[role] if role in ("skill", "agent", "io", "pr") else (None, role, None) + d.rounded_rectangle([P(x0), P(y0), P(x1), P(y1)], radius=P(radius), fill=fill, outline=bd, width=P(width)) + + +def text(x, y, s, size=12, color=None, bold=False, anchor="lm"): + d.text((P(x), P(y)), s, font=font(size, bold), fill=color or C["ink"], anchor=anchor) + + +def text_bg(x, y, s, size=11, color=None, bold=True): + f = font(size, bold) + w = f.getlength(s) / S + d.rectangle([P(x - w / 2 - 5), P(y - size * 0.75), P(x + w / 2 + 5), P(y + size * 0.75)], fill=C["labelbg"]) + d.text((P(x), P(y)), s, font=f, fill=color or C["ink"], anchor="mm") + + +def rich(x, y, segs, size=12): + cx = x + for t, col, b in segs: + f = font(size, b) + d.text((P(cx), P(y)), t, font=f, fill=col, anchor="lm") + cx += f.getlength(t) / S + return cx + + +def ahead(x, y, dr, size=7, color=None): + color = color or C["line"] + if dr == "down": + p = [(x, y), (x - size, y - size * 1.5), (x + size, y - size * 1.5)] + elif dr == "up": + p = [(x, y), (x - size, y + size * 1.5), (x + size, y + size * 1.5)] + elif dr == "right": + p = [(x, y), (x - size * 1.5, y - size), (x - size * 1.5, y + size)] + else: + p = [(x, y), (x + size * 1.5, y - size), (x + size * 1.5, y + size)] + d.polygon([(P(a), P(b)) for a, b in p], fill=color) + + +def varrow(x, y0, y1, color=None): + d.line([P(x), P(y0), P(x), P(y1)], fill=color or C["line"], width=P(2.4)) + ahead(x, y1, "down", color=color) + + +def harrow(x0, x1, y): + d.line([P(x0), P(y), P(x1), P(y)], fill=C["line"], width=P(2.4)) + ahead(x1, y, "right") + + +def dashed(x0, y0, x1, y1, color, width=2.2, dash=10, gap=6): + import math + dist = math.hypot(x1 - x0, y1 - y0) + if dist == 0: + return + ux, uy = (x1 - x0) / dist, (y1 - y0) / dist + pos = 0.0 + while pos < dist: + seg = min(dash, dist - pos) + d.line([P(x0 + ux * pos), P(y0 + uy * pos), P(x0 + ux * (pos + seg)), P(y0 + uy * (pos + seg))], + fill=color, width=P(width)) + pos += dash + gap + + +def dashed_rect(x0, y0, x1, y1, color, width=2.4, dash=12, gap=7): + dashed(x0, y0, x1, y0, color, width, dash, gap) + dashed(x1, y0, x1, y1, color, width, dash, gap) + dashed(x1, y1, x0, y1, color, width, dash, gap) + dashed(x0, y1, x0, y0, color, width, dash, gap) + + +def swatch(x, y, role, label, dash=False): + if dash: + dashed(x, y, x + 24, y, C["loop"], 2.8, 6, 3) + tx = x + 32 + else: + fill, bd, _ = C[role] + d.rounded_rectangle([P(x), P(y - 7), P(x + 22), P(y + 7)], radius=P(3), fill=fill, outline=bd, width=P(1.8)) + tx = x + 30 + text(tx, y, label, size=12.5, color=C["ink"]) + return tx + font(12.5).getlength(label) / S + 28 + + +def build(theme, out): + global d, C + C = theme + img = Image.new("RGB", (W * S, H * S), C["bg"]) + globals()["d"] = ImageDraw.Draw(img) + + AG = C["agent"][2] + SK = C["skill"][2] + IO = C["io"][2] + GR = C["gray"] + + # header + text(40, 40, "How /brief chain=on runs", size=22, bold=True, color=C["ink"]) + lx = swatch(40, 80, "skill", "skill") + lx = swatch(lx, 80, "agent", "subagent") + lx = swatch(lx, 80, None, "loop", dash=True) + + # ---- band 1: setup chain ---- + bw = (880 - 88) / 3 + xs = [40, 40 + bw + 44, 40 + 2 * (bw + 44)] + by0, by1 = 104, 192 + titles = [("/brief", [[("spawns ", C["ink"], False), ("researcher", AG, True)], + [("writes brief.md + policy", IO, False)]]), + ("/create-ticket", [[("splits scope into N tickets", C["ink"], False)], + [("agents: ", C["ink"], False), ("decomposer, planner", AG, True)]]), + ("/autopilot", [[("orchestrates the run", C["ink"], False)], + [("ticket-by-ticket (topological)", C["ink"], False)]])] + for x0, (nm, lines) in zip(xs, titles): + box(x0, by0, x0 + bw, by1, "skill") + text(x0 + 14, by0 + 24, nm, size=15.5, bold=True, color=SK) + rich(x0 + 14, by0 + 50, lines[0], size=11.5) + rich(x0 + 14, by0 + 70, lines[1], size=11.5) + harrow(xs[0] + bw, xs[1], (by0 + by1) / 2) + harrow(xs[1] + bw, xs[2], (by0 + by1) / 2) + + # autopilot -> loop + apx = xs[2] + bw / 2 + varrow(apx, by1, 224) + + # ---- per-ticket loop container ---- + LX0, LY0, LX1, LY1 = 40, 228, 920, 452 + dashed_rect(LX0, LY0, LX1, LY1, C["loop"]) + text(LX0 + 16, LY0 + 18, "PER-TICKET LOOP — repeats for each ticket", size=13.5, bold=True, color=C["loop"]) + text(LX0 + 16, LY0 + 38, "(auto-/compact resets the context window between tickets)", size=10.5, color=C["loop"]) + + ibw = (848 - 80) / 3 + ix = [56, 56 + ibw + 40, 56 + 2 * (ibw + 40)] + iy0, iy1 = 290, 400 + sc = [("/scout", [[("investigate + plan", C["ink"], False)], + [("researcher · planner", AG, True)]]), + ("/impl", [[("verify loop", C["loop"], True), (" — Generator/Evaluator, max 9", C["ink"], False)], + [("implementer · ac-evaluator", AG, True)]]), + ("/ship", [[("commit + open PR", C["ink"], False)], + [("learns via ", C["ink"], False), ("/tune", SK, True)]])] + for x0, (nm, lines) in zip(ix, sc): + box(x0, iy0, x0 + ibw, iy1, "skill") + text(x0 + 12, iy0 + 22, nm, size=15, bold=True, color=SK) + rich(x0 + 12, iy0 + 48, lines[0], size=11.5) + rich(x0 + 12, iy0 + 70, lines[1], size=11.5) + harrow(ix[0] + ibw, ix[1], (iy0 + iy1) / 2) + harrow(ix[1] + ibw, ix[2], (iy0 + iy1) / 2) + + # loop-back arrow (under boxes) + scx = ix[0] + ibw / 2 + shx = ix[2] + ibw / 2 + lby = 426 + dashed(shx, iy1, shx, lby, C["loop"], 2.4, 9, 6) + dashed(shx, lby, scx, lby, C["loop"], 2.4, 9, 6) + dashed(scx, lby, scx, iy1, C["loop"], 2.4, 9, 6) + ahead(scx, iy1 + 2, "up", color=C["loop"]) + text_bg((scx + shx) / 2, lby, "yes — next ticket", size=10.5, color=C["loop"]) + + # loop -> PR + varrow((LX0 + LX1) / 2, LY1, 488) + text_bg((LX0 + LX1) / 2 + 92, (LY1 + 488) / 2, "all tickets done", size=10, color=GR) + + PX0, PX1 = 320, 640 + box(PX0, 488, PX1, 540, "pr") + text((PX0 + PX1) / 2, 514, "All tickets shipped → Pull Request(s)", size=13, bold=True, color=C["pr"][2], anchor="mm") + + # caption (ties to harness + points to detail) + text(40, 578, "Throughout, lifecycle hooks DRIVE the loop (the Stop hook re-injects \"continue\") and GUARD every write,", + size=11.5, color=GR) + rich(40, 598, [("and each subagent runs in an isolated context (information firewall). ", GR, False), + ("Full flow — agents · hooks · harness — below.", C["ink"], True)], size=11.5) + + img.save(out) + print("wrote", out, img.size) + + +build(LIGHT, os.path.join(HERE, "brief-chain-overview.png")) +build(DARK, os.path.join(HERE, "brief-chain-overview-dark.png")) From c665a9c44780bb6eb74f7085b5b81babfbd0722f Mon Sep 17 00:00:00 2001 From: aimsise Date: Thu, 18 Jun 2026 14:06:09 +0900 Subject: [PATCH 09/15] feat(eval): AASC MR-KEYFAITH (b) (c)-parity -- reflection-derived corpus directive + worked shape + K-trigger binding Brings the class-(b) STRUCTURAL-KEY-INJECTION (MR-KEYFAITH) lens to parity with the class-(c) MR-ALPHABET directive, after the dogfood48 (b) run self-elicited the K-axis sweep but generated a HAND-PICKED literal key list (the lens MR-KEYFAITH clause was bare/advisory prose while MR-ALPHABET had a strong enumerate-by-property directive). A /tmp prototype proved (b) is catchable by construction with a reflection-derived generator that names no key. - skills/impl/references/accept-set-conformance-harness.md: a worked REFLECTION-DERIVED MR-KEYFAITH (b) shape (mirrors the MR-ALPHABET example) -- an independent round-trip-faithfulness oracle + a generator that derives reserved/accessor keys by reflection over the structure's type/prototype (naming NO key literal) + generic hostiles (empty/duplicate/normalized-collision) + a black-box diff. ILLUSTRATIVE. - agents/ac-evaluator{,-hi}.md (byte-identical): the MR-KEYFAITH clause gains a MUST DERIVE-the-corpus-BY-REFLECTION directive (names no key, enumerates via reflection, covers all reserved/accessor/colliding keys + generic hostiles; a single hand-picked list is not conformant) pointing at the worked shape. The gating qualifier stays ASSUMED/advisory (not upgraded this round). - skills/impl/SKILL.md: the deterministic trigger now binds the K axis for a shared_input_boundary sibling that builds a keyed structure from untrusted input, even when no lexical strict/canonical/lossless/limit word is present. - tests/test-skill-contracts.sh: CT-AASC-8 (the (b) shape) + CT-AASC-9 (the reflection-derived corpus directive in both twins), RED-first. Tests: test-skill-contracts 847/847, path-consistency 144/144, twins byte-identical, ShellCheck clean, CT-DECONTAM-1 zero product-instance hits (directive + shape name no key; verified by forced-text grep). Honest scope: EDIT A/B are PROSE directives mirroring the (c) directive that works WITH run-to-run variance (the AASC trigger+sweep is LLM-mediated, not a hard gate). This strengthens (b) elicitation from bare/advisory prose to a MUST + worked shape; efficacy (does the K sweep now derive-by-reflection) is to be validated by a re-dogfood on the COMMITTED tree -- the prior dogfood49 was invalid because the shape was uncommitted and did not load. The MR-KEYFAITH gating stays advisory; determinism would require a runtime hook (deferred). Co-Authored-By: Claude Opus 4.8 (1M context) --- agents/ac-evaluator-hi.md | 11 +- agents/ac-evaluator.md | 11 +- skills/impl/SKILL.md | 2 +- .../accept-set-conformance-harness.md | 106 +++++++++++++++++- tests/test-skill-contracts.sh | 32 ++++++ 5 files changed, 158 insertions(+), 4 deletions(-) diff --git a/agents/ac-evaluator-hi.md b/agents/ac-evaluator-hi.md index c555ba6..78d1421 100644 --- a/agents/ac-evaluator-hi.md +++ b/agents/ac-evaluator-hi.md @@ -437,7 +437,16 @@ single pass under-checks: never emit must be rejected or normalized-idempotent), and **MR-KEYFAITH** (a reserved / accessor / colliding key must not mutate host-structure metadata or be silently dropped — **ASSUMED, not proven**: treat an MR-KEYFAITH divergence - as advisory unless a concrete drop / mutation is observed). **FAIL gating + as advisory unless a concrete drop / mutation is observed. For the CORPUS you + MUST DERIVE the candidate key corpus BY REFLECTION over the structure's own + type / prototype — its reserved, accessor, and method names — so your generator + names NO key and hard-codes NO key list; it enumerates via reflection, so every + reserved / accessor / colliding key is covered for ALL inputs, plus the generic + structural hostiles (an empty key, a duplicate of an existing key, a key that + collides after the structure's normalization), and you diff against an + independent round-trip-faithfulness oracle + (`skills/impl/references/accept-set-conformance-harness.md`). A single + hand-picked key list is NOT a conformant corpus). **FAIL gating (oracle-authoritative two-tier, NO false-positive storm):** FAIL the AC on an accept-set divergence ONLY when the hand-coded oracle AUTHORITATIVELY reflects a spec that is STRICTLY NARROWER than the unit's accept-set (the advertised diff --git a/agents/ac-evaluator.md b/agents/ac-evaluator.md index 046be7f..afa60ab 100644 --- a/agents/ac-evaluator.md +++ b/agents/ac-evaluator.md @@ -437,7 +437,16 @@ single pass under-checks: never emit must be rejected or normalized-idempotent), and **MR-KEYFAITH** (a reserved / accessor / colliding key must not mutate host-structure metadata or be silently dropped — **ASSUMED, not proven**: treat an MR-KEYFAITH divergence - as advisory unless a concrete drop / mutation is observed). **FAIL gating + as advisory unless a concrete drop / mutation is observed. For the CORPUS you + MUST DERIVE the candidate key corpus BY REFLECTION over the structure's own + type / prototype — its reserved, accessor, and method names — so your generator + names NO key and hard-codes NO key list; it enumerates via reflection, so every + reserved / accessor / colliding key is covered for ALL inputs, plus the generic + structural hostiles (an empty key, a duplicate of an existing key, a key that + collides after the structure's normalization), and you diff against an + independent round-trip-faithfulness oracle + (`skills/impl/references/accept-set-conformance-harness.md`). A single + hand-picked key list is NOT a conformant corpus). **FAIL gating (oracle-authoritative two-tier, NO false-positive storm):** FAIL the AC on an accept-set divergence ONLY when the hand-coded oracle AUTHORITATIVELY reflects a spec that is STRICTLY NARROWER than the unit's accept-set (the advertised diff --git a/skills/impl/SKILL.md b/skills/impl/SKILL.md index 313bc8a..ddb3ab5 100644 --- a/skills/impl/SKILL.md +++ b/skills/impl/SKILL.md @@ -130,7 +130,7 @@ Intra-impl state lives under `phases.impl.*` in `{ticket-dir}/phase-state.yaml`. 15. **MUST invoke the AC Evaluator agent via the Agent tool** — spawn `simple-workflow:ac-evaluator` (sonnet) by default, OR `simple-workflow:ac-evaluator-hi` (opus) when the Step 3a resolver set `EVALUATOR_MODEL == opus` (M5, v8.3.0+; the per-spawn `model:` override is rejected by the Agent JSONSchema, so the model is selected by which agent file is spawned — `agents/ac-evaluator-hi.md` is byte-identical to `ac-evaluator` except its `name:` and `model:` frontmatter lines). Both agent files honour the identical spawn-prompt contract (fields a-m, `## Bound capabilities (per AC)`, `Oracle verification:`, `Accept-set conformance:`). **NEVER self-assess AC compliance** — Evaluator reads code via `git diff` and renders PASS/FAIL (Ticket 002 failure mode L554-L559). Fail immediately if not invocable. - **Deterministic capability handoff (per-AC)**: Before constructing the prompt, `Read` `{ticket-dir}/ticket.md` (or the resolved ticket path) and reuse the per-AC bound-capability list extracted from the `### Capabilities` section in Step 13. Inline that mapping verbatim into the spawn prompt under `## Bound capabilities (per AC)` so the Evaluator picks its evidence-gathering capability from the recorded binding instead of re-deriving relevance from the AC text. When the ticket lacks `### Capabilities` (older ticket), fall back to the present ad-hoc path: emit `## Bound capabilities (per AC): (none recorded — ticket pre-dates Gate 6)` and let `ac-evaluator` proceed on its in-house verification methods. The Evaluator MUST treat the recorded binding as authoritative — when an AC carries a bound capability, code inspection alone is not sufficient evidence to PASS that AC; the Evaluator MUST gather live evidence via the bound Skill (or rewrite the AC as static via the planner's `#### Capability Gaps` rule, which is upstream). **Oracle independence (computational ACs, v8.2.0+)**: for any AC whose PASS/FAIL hinges on a computed numeric/algorithmic value, the Evaluator MUST (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`) derive ≥1 expected value from an oracle independent of the code and compare the implementation's RAW (pre-rounding) output with an explicit tolerance — a green project suite is necessary but not sufficient. This applies in single, partition, and multi-verifier modes alike. Inline the `oracle_verification` value resolved at Step 3a into the Evaluator spawn prompt as the field `Oracle verification: {auto|off}` (alongside the `## Bound capabilities (per AC)` handoff) so the Evaluator honours the kill switch deterministically from the prompt rather than reading the policy from disk; when `off`, the Evaluator skips the oracle-independence requirement (pre-v8.2.0 path). **Independent evidence (Gate 8 behavioral ACs, M1, v8.3.0+)**: for every behavioral AC (PASS/FAIL hinges on observable runtime behaviour), the Evaluator MUST (per `agents/ac-evaluator.md` `## Independent Evidence (behavioral ACs)`) establish the AC via at least one evidence channel independent of the implementation's own internals (EC-ORACLE / EC-DIFFERENTIAL / EC-PROPERTY / EC-RUNTIME per `skills/impl/references/evidence-channels.md`), honouring the resolved `EVIDENCE_FLOOR`. Inline the `EVIDENCE_FLOOR` resolved at Step 3a into the Evaluator spawn prompt as the field `Evidence floor: {EC-STATIC+natural|+1-independent|>=2-independent}` (alongside the `Oracle verification: {auto|off}` and `## Bound capabilities (per AC)` handoffs) so the Evaluator honours the floor and the `constraints.independent_evidence` kill switch deterministically from the prompt rather than from disk; when the floor resolves `off`, the Evaluator skips the evidence-floor requirement (pre-v8.3.0 path) but the always-on Gate 7 oracle check still applies when `oracle_verification` is active. Oracle independence (the EC-ORACLE sub-case for computational ACs) is unchanged. **Per-AC oracle audit (M8, v8.4.0+)**: the Evaluator emits one `[ORACLE-AUDIT] ac={id} oracle-kind={first-principles|sibling|hand|none} channels={N} boundary-quantified={y|n}` line per computational / behavioral AC to stderr (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`), surfacing which oracle-kind backed each verdict and how many independent channels it exercised; this observability is UNCONDITIONAL — it emits even under `independent_evidence: off` / `oracle_verification: off` (recording `oracle-kind=none` on the degraded path). **Failure-class panel (v8.4.0+)**: the orchestrator resolves `constraints.eval_panel` (auto|on|off) at Step 3a — `auto` activates the default failure-class eval panel for a ticket touching `>=2` source units OR carrying `>=1` behavioral AC, `on` forces it, `off` disables it (byte-for-byte revert to the single all-purpose pass) — and inlines the resolution into the spawn prompt as field `m` (`--- panel: standard lenses=L-CORRECTNESS,[,] ---`). At `standard` the SINGLE evaluator runs the named lenses SEQUENTIALLY (no added spawn — size gates depth only); at `exhaustive` the panel emphasis rides the three lens spawns. The evaluator emits one `[EVAL-PANEL] lenses={comma-list} mode={single|exhaustive}` line per invocation (M8 observability, beside `[ORACLE-AUDIT]`) UNLESS the panel resolved `off`, and the orchestrator emits `[EVAL-PANEL-MODE] mode={auto|on|off} active={y|n} lenses={N} spawns={1|3} reason={multi-unit|behavioral-ac|forced|trivial|off}` at Step 3a. See [ac-evaluator-orchestration.md](references/ac-evaluator-orchestration.md) `## Default failure-class panel` and `agents/ac-evaluator.md` `## Failure-class panel (default lenses)`. **Accept-set conformance handoff (`accept_set_conformance`, v8.5.0+):** read `constraints.accept_set_conformance` from the ticket policy (absent file / field / unknown → `auto`, active). When it is not `off`, compute a per-AC deterministic trigger so the evaluator never re-derives the obligation itself (dogfood46: in-context recognition was non-uniform — a delegating-sibling ticket stood the sweep down): for each AC, mark it triggered when EITHER (1) a case-insensitive lexical scan of the AC text, the ticket's `### Implementation Notes`, and the cited docstring / `--help` / schema matches any of the words `strict`, `canonical`, `lossless`, `limit`; OR (2) the AC's external-input boundary belongs to a `shared_input_boundary` sibling family (the same signal the planner / ticket-evaluator spawns forward — a shared-input sibling triggers even with none of those words present, the "delegation is NOT an automatic n/a" case). Inline the result into the Evaluator spawn prompt as the single field `Accept-set conformance: {auto|off} triggered-on={comma-list of triggered AC-ids, or (none)}` (alongside `Oracle verification:` / `Evidence floor:` / `Selfdoc verification:`), and emit `[ACCEPT-SET-TRIGGER] mode={auto|off} triggered={ids|none} basis={lexical|shared-input|both|none}` to stderr. The evaluator MUST run the EXECUTED accept-set sweep for EXACTLY the `triggered-on=` ACs — the orchestrator has already done the recognition, so the evaluator does not re-decide whether to run it. Independent of `verification_depth` / `oracle_verification` / `eval_panel`. See [accept-set-conformance-harness.md](references/accept-set-conformance-harness.md). + **Deterministic capability handoff (per-AC)**: Before constructing the prompt, `Read` `{ticket-dir}/ticket.md` (or the resolved ticket path) and reuse the per-AC bound-capability list extracted from the `### Capabilities` section in Step 13. Inline that mapping verbatim into the spawn prompt under `## Bound capabilities (per AC)` so the Evaluator picks its evidence-gathering capability from the recorded binding instead of re-deriving relevance from the AC text. When the ticket lacks `### Capabilities` (older ticket), fall back to the present ad-hoc path: emit `## Bound capabilities (per AC): (none recorded — ticket pre-dates Gate 6)` and let `ac-evaluator` proceed on its in-house verification methods. The Evaluator MUST treat the recorded binding as authoritative — when an AC carries a bound capability, code inspection alone is not sufficient evidence to PASS that AC; the Evaluator MUST gather live evidence via the bound Skill (or rewrite the AC as static via the planner's `#### Capability Gaps` rule, which is upstream). **Oracle independence (computational ACs, v8.2.0+)**: for any AC whose PASS/FAIL hinges on a computed numeric/algorithmic value, the Evaluator MUST (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`) derive ≥1 expected value from an oracle independent of the code and compare the implementation's RAW (pre-rounding) output with an explicit tolerance — a green project suite is necessary but not sufficient. This applies in single, partition, and multi-verifier modes alike. Inline the `oracle_verification` value resolved at Step 3a into the Evaluator spawn prompt as the field `Oracle verification: {auto|off}` (alongside the `## Bound capabilities (per AC)` handoff) so the Evaluator honours the kill switch deterministically from the prompt rather than reading the policy from disk; when `off`, the Evaluator skips the oracle-independence requirement (pre-v8.2.0 path). **Independent evidence (Gate 8 behavioral ACs, M1, v8.3.0+)**: for every behavioral AC (PASS/FAIL hinges on observable runtime behaviour), the Evaluator MUST (per `agents/ac-evaluator.md` `## Independent Evidence (behavioral ACs)`) establish the AC via at least one evidence channel independent of the implementation's own internals (EC-ORACLE / EC-DIFFERENTIAL / EC-PROPERTY / EC-RUNTIME per `skills/impl/references/evidence-channels.md`), honouring the resolved `EVIDENCE_FLOOR`. Inline the `EVIDENCE_FLOOR` resolved at Step 3a into the Evaluator spawn prompt as the field `Evidence floor: {EC-STATIC+natural|+1-independent|>=2-independent}` (alongside the `Oracle verification: {auto|off}` and `## Bound capabilities (per AC)` handoffs) so the Evaluator honours the floor and the `constraints.independent_evidence` kill switch deterministically from the prompt rather than from disk; when the floor resolves `off`, the Evaluator skips the evidence-floor requirement (pre-v8.3.0 path) but the always-on Gate 7 oracle check still applies when `oracle_verification` is active. Oracle independence (the EC-ORACLE sub-case for computational ACs) is unchanged. **Per-AC oracle audit (M8, v8.4.0+)**: the Evaluator emits one `[ORACLE-AUDIT] ac={id} oracle-kind={first-principles|sibling|hand|none} channels={N} boundary-quantified={y|n}` line per computational / behavioral AC to stderr (per `agents/ac-evaluator.md` `## Oracle Independence (computational ACs)`), surfacing which oracle-kind backed each verdict and how many independent channels it exercised; this observability is UNCONDITIONAL — it emits even under `independent_evidence: off` / `oracle_verification: off` (recording `oracle-kind=none` on the degraded path). **Failure-class panel (v8.4.0+)**: the orchestrator resolves `constraints.eval_panel` (auto|on|off) at Step 3a — `auto` activates the default failure-class eval panel for a ticket touching `>=2` source units OR carrying `>=1` behavioral AC, `on` forces it, `off` disables it (byte-for-byte revert to the single all-purpose pass) — and inlines the resolution into the spawn prompt as field `m` (`--- panel: standard lenses=L-CORRECTNESS,[,] ---`). At `standard` the SINGLE evaluator runs the named lenses SEQUENTIALLY (no added spawn — size gates depth only); at `exhaustive` the panel emphasis rides the three lens spawns. The evaluator emits one `[EVAL-PANEL] lenses={comma-list} mode={single|exhaustive}` line per invocation (M8 observability, beside `[ORACLE-AUDIT]`) UNLESS the panel resolved `off`, and the orchestrator emits `[EVAL-PANEL-MODE] mode={auto|on|off} active={y|n} lenses={N} spawns={1|3} reason={multi-unit|behavioral-ac|forced|trivial|off}` at Step 3a. See [ac-evaluator-orchestration.md](references/ac-evaluator-orchestration.md) `## Default failure-class panel` and `agents/ac-evaluator.md` `## Failure-class panel (default lenses)`. **Accept-set conformance handoff (`accept_set_conformance`, v8.5.0+):** read `constraints.accept_set_conformance` from the ticket policy (absent file / field / unknown → `auto`, active). When it is not `off`, compute a per-AC deterministic trigger so the evaluator never re-derives the obligation itself (dogfood46: in-context recognition was non-uniform — a delegating-sibling ticket stood the sweep down): for each AC, mark it triggered when EITHER (1) a case-insensitive lexical scan of the AC text, the ticket's `### Implementation Notes`, and the cited docstring / `--help` / schema matches any of the words `strict`, `canonical`, `lossless`, `limit`; OR (2) the AC's external-input boundary belongs to a `shared_input_boundary` sibling family (the same signal the planner / ticket-evaluator spawns forward — a shared-input sibling triggers even with none of those words present, the "delegation is NOT an automatic n/a" case). Furthermore, when a `shared_input_boundary` sibling builds a KEYED STRUCTURE from untrusted input (a record / map / object / namespace keyed by untrusted keys), that AC MUST be included in `triggered-on=` for the K axis even when no lexical `strict` / `canonical` / `lossless` / `limit` word is present — the keyed-structure boundary is itself the trigger. Inline the result into the Evaluator spawn prompt as the single field `Accept-set conformance: {auto|off} triggered-on={comma-list of triggered AC-ids, or (none)}` (alongside `Oracle verification:` / `Evidence floor:` / `Selfdoc verification:`), and emit `[ACCEPT-SET-TRIGGER] mode={auto|off} triggered={ids|none} basis={lexical|shared-input|both|none}` to stderr. The evaluator MUST run the EXECUTED accept-set sweep for EXACTLY the `triggered-on=` ACs — the orchestrator has already done the recognition, so the evaluator does not re-decide whether to run it. Independent of `verification_depth` / `oracle_verification` / `eval_panel`. See [accept-set-conformance-harness.md](references/accept-set-conformance-harness.md). Count positive ACs (`AC_COUNT`); compute `EVALUATOR_MAX_TURNS = max(60, AC_COUNT * 4)` (field `j`; hard `maxTurns: 200` in frontmatter; e.g. `AC_COUNT = 22` → 88). diff --git a/skills/impl/references/accept-set-conformance-harness.md b/skills/impl/references/accept-set-conformance-harness.md index c82839e..92145cc 100644 --- a/skills/impl/references/accept-set-conformance-harness.md +++ b/skills/impl/references/accept-set-conformance-harness.md @@ -114,7 +114,111 @@ def make_corpus(): in a K-axis structure must not mutate host-structure metadata or be silently dropped. The structural-key reflection this hypothesises is unverified; treat an MR-KEYFAITH divergence as advisory unless a concrete drop / mutation is - observed. + observed. The copyable shape for this class lives in + [§ The worked MR-KEYFAITH (b) shape](#the-worked-mr-keyfaith-b-shape-reflection-derived-keyed-structure) + below — a reflection-derived key generator paired with an independent + round-trip-faithfulness oracle. Reaching for it does **not** upgrade the gating: + the generated divergence stays advisory (`authoritative=n`, a Caveat) unless the + black-box diff exhibits a concrete drop / overwrite / host-metadata mutation. + +## The worked MR-KEYFAITH (b) shape reflection-derived keyed structure + +The MR-ALPHABET module above derives its corpus from a **property** (the Unicode +decimal-digit category) and names no script or codepoint. The K-axis class needs +the same move so the self-elicited sweep DERIVES the dangerous keys instead of +naming literals: a hand-picked reserved-key list is the keyed-structure analogue +of hard-coding a per-script digit table — it tests only the keys the author +happened to recall, and the one that ships the leak is the one nobody listed. +This subsection gives MR-KEYFAITH the same copyable structure as MR-ALPHABET, for +a K-axis structure built from untrusted `(key, value)` input pairs. It is +**illustrative only** on both the domain axis and the language axis; transcribe +the ROLES (independent round-trip-faithfulness oracle; reflection-derived +generator; black-box diff), not the surface domain. Gating is unchanged: the +divergence this produces is advisory unless the diff shows a concrete drop / +overwrite / host-metadata mutation (see the MR-KEYFAITH bullet above). + +The oracle is **round-trip-faithfulness** and is INDEPENDENT of the builder: it +reasons only from the input PAIRS and never calls the builder under test to +decide what is correct. + +```python +# ILLUSTRATIVE ONLY (neutral domain, Python): round-trip faithfulness for a +# structure rebuilt from untrusted (key, value) pairs. SPEC-DERIVED and +# INDEPENDENT of the builder: the expectation is computed from the INPUT PAIRS by +# last-write-wins, never by asking the builder what it produced. +# build(pairs) -> the structure under test; get(struct, k) -> value or a +# sentinel if absent; serialize(struct) -> the structure's wire form. +def oracle_faithful(pairs, build, get, serialize, MISSING=object()): + # 1. last-write-wins truth, derived only from the inputs. + expected = {} + for k, v in pairs: + expected[k] = v # later pair for a repeated key wins + built = build(pairs) + # 2. every key the inputs asked for returns ITS value unchanged (no drop / + # overwrite / host-metadata bleed) — read back through the public getter. + for k, want in expected.items(): + if get(built, k) != want: + return False # silent drop or wrong-value overwrite + # 3. round-trip: build(serialize(x)) preserves the same observable mapping. + again = build(serialize(built)) + for k, want in expected.items(): + if get(again, k) != want: + return False + return True +``` + +The generator DERIVES the host structure's own reserved / accessor key names BY +REFLECTION at runtime and names no key literal — exactly as MR-ALPHABET selects +by the decimal-digit PROPERTY and names no script. The reflection API calls +(below) are introspection plumbing, not key literals; the dangerous names are +whatever the live host happens to expose, so the source stays decontaminated. + +```python +# ILLUSTRATIVE ONLY: derive the hostile key corpus BY REFLECTION over the live +# host structure — name NO key literal. The accessor / reserved names are read +# off the runtime type at sweep time, so this generator is portable across hosts +# and stays free of any product-specific key denylist. +# +# JS illustration : keys = new Set(Object.getOwnPropertySymbols(target)); +# for (let p = target; p; p = Object.getPrototypeOf(p)) +# Object.getOwnPropertyNames(p).forEach(n => keys.add(n)); +# // climb the ancestor chain via getPrototypeOf to its root, +# // adding each level's own names — names the accessor / +# // reserved set by reflection, no literal. +# Py illustration : as below, via dir(type(target)) over the live type +def reflect_hostile_keys(target): + keys = set() + t = type(target) + keys.update(dir(t)) # the type's own method + dunder names + for base in t.__mro__: # walk the resolution order to the root + keys.update(vars(base).keys()) # each ancestor's own attribute names + return keys + +def make_key_corpus(target, existing_keys): + hostile = reflect_hostile_keys(target) # reflection-derived accessor names + generic = set() + generic.add('') # empty key (generic structural hostile) + if existing_keys: + generic.add(next(iter(existing_keys))) # duplicate of an existing key + # a key that COLLIDES only after the structure's own normalization (the + # structure decides the fold; we derive a colliding partner from an existing + # key rather than naming a literal collision pair). + for k in existing_keys: + if isinstance(k, str) and k != k.casefold(): + generic.add(k.casefold()) # normalized-collision partner + break + return hostile | generic +``` + +Run the REAL builder black-box over `make_key_corpus(...)` as `(key, value)` +pairs (synthetic values, so the only variable is the key), then DIFF against +`oracle_faithful`. A non-faithful build — a reflection-derived accessor name that +overwrites host-structure metadata, an empty / duplicate / normalized-collision +key that silently drops a value, or a round-trip that loses a mapping — is the +catch; name the offending class in Feedback so the producer round can pin it. A +faithful builder returns a clean zero over the whole reflected corpus (no +false-positive storm), because the oracle accepts exactly the last-write-wins +mapping the inputs demanded. ## Black-box diff under a watchdog (the executed step) diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index ba8bad9..d34ab2f 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -10287,6 +10287,38 @@ for aasc7_tok in 'implementation-peek' 'shallow sweep'; do done assert_true "CT-AASC-7 (black-box no-impl-peek + shallow-sweep self-incrimination, both twins): implementation-peek + shallow sweep present in ac-evaluator AND -hi ($aasc7_ok)" "$aasc7_ok" +# CT-AASC-8 (worked MR-KEYFAITH (b) shape: reflection-derived key generator + round-trip-faithfulness oracle; v8.5.0+). +# LOAD-BEARING per charter section H: a (b) dogfood self-elicited the MR-KEYFAITH / K-axis sweep but executed a HAND-PICKED +# key-literal corpus because the doc shipped a worked example ONLY for MR-ALPHABET and left MR-KEYFAITH bare prose. This pins +# that the harness doc (AASC_DOC handle) now ships a copyable MR-KEYFAITH (b) shape whose generator DERIVES the dangerous keys +# by reflection (naming NO key literal, exactly as MR-ALPHABET selects by the decimal-digit PROPERTY). Net-new token +# 'reflection-derived' is HEAD=0 (RED-first; bare 'reflection' pre-exists in the MR-KEYFAITH prose bullet and is NOT what this +# pins). Stays decontam-clean: the shape names no key-literal denylist token (CT-DECONTAM-1 must remain 0 hits). +aasc8_phrase=$(grep -cF 'reflection-derived' "$AASC_DOC" 2>/dev/null || true) +aasc8_result="false" +if [ "$aasc8_phrase" -ge 1 ]; then aasc8_result="true"; fi +assert_true \ + "CT-AASC-8 (worked MR-KEYFAITH (b) shape: reflection-derived generator + round-trip-faithfulness oracle): net-new (b)-shape phrase in harness doc ($aasc8_phrase>=1)" \ + "$aasc8_result" + +# CT-AASC-9 ((c)-parity MR-KEYFAITH CORPUS directive: derive the dangerous-key corpus BY REFLECTION, both twins; v8.5.0+). +# LOAD-BEARING per charter section H: a (b) dogfood self-elicited the MR-KEYFAITH / K-axis sweep but executed a HAND-PICKED +# key-literal corpus because the LENS shipped MR-KEYFAITH as bare/advisory prose while MR-ALPHABET (c) carried a strong +# enumerate-by-PROPERTY/names-NO-script directive (which reached astral breadth in dogfood47). This brings the MR-KEYFAITH +# CORPUS directive to (c)-parity: a MUST to DERIVE the candidate key corpus BY REFLECTION (naming NO key literal, exactly as +# MR-ALPHABET selects by the decimal-digit PROPERTY) so every reserved / accessor / colliding key is covered for ALL inputs. +# The GATING qualifier (**ASSUMED, not proven** ... advisory) is UNCHANGED this round. Net-new token +# 'DERIVE the candidate key corpus BY REFLECTION' is HEAD=0 (RED-first). Twins byte-identical. Stays decontam-clean: the +# directive names no key-literal denylist token (CT-DECONTAM-1 must remain 0 hits). +aasc9_tok='DERIVE the candidate key corpus BY REFLECTION' +aasc9_a=$(grep -cF "$aasc9_tok" "$ACEV_EV" || true) +aasc9_b=$(grep -cF "$aasc9_tok" "$ACEVHI_EV" || true) +aasc9_result="false" +if [ "$aasc9_a" -ge 1 ] && [ "$aasc9_b" -ge 1 ]; then aasc9_result="true"; fi +assert_true \ + "CT-AASC-9 ((c)-parity MR-KEYFAITH CORPUS directive: derive-by-reflection, both twins): directive present in ac-evaluator ($aasc9_a>=1) AND -hi ($aasc9_b>=1)" \ + "$aasc9_result" + echo "" From 39999645f55d1e088b5875ead7a50cd57b5b43e3 Mon Sep 17 00:00:00 2001 From: aimsise Date: Thu, 18 Jun 2026 19:30:15 +0900 Subject: [PATCH 10/15] feat(eval): AASC MR-KEYFAITH (b) finishing-touches -- gating proven-upgrade + reflection-corpus completeness + (b) design-oracle Finishes class-(b) STRUCTURAL-KEY-INJECTION (MR-KEYFAITH) to full parity with the class-(c) MR-ALPHABET mechanism, after dogfood50 validated the (b) sweep as reflection-derived-effective (the K corpus self-elicited via dir(type) naming no key; K bound reliably; product (b)-faithful; baseline (a)/(b)/(c) all validated, with a run-to-run variance caveat). - agents/ac-evaluator{,-hi}.md (byte-identical): the MR-KEYFAITH clause's temporary "ASSUMED, not proven / advisory unless a concrete drop" qualifier is removed and folded into the SAME standard two-tier oracle-authoritative FAIL gating as the other MRs (a concrete round-trip-faithfulness violation on a lossless/strict keyed boundary => FAIL; a legitimately-wide keyed boundary => advisory). The corpus directive now names private/internal slot names and the FULL reflected set (never truncated/sliced). - skills/impl/references/accept-set-conformance-harness.md: the MR-KEYFAITH worked shape gets the same gating-upgrade (lockstep), an oracle-independence hardening (the round-trip expectation is computed from the INPUT PAIRS by last-write-wins, never re-invoking the builder -- closes the dogfood50 circularity residual), and private/internal-slot + FULL-reflected-set coverage (closes the dogfood49 private-slot-shadow + dogfood50 sliced-corpus residuals). - design-oracles/aasc-keyfaith/{probe.js,probe.py,README.md}: a committed (b) design-oracle (mirrors the committed (c) design-oracles/aasc-accept-set/) -- a reflection-derived key generator (names no key literal) paired with an independent round-trip-faithfulness oracle, proving the (b) class is caught by construction, language-agnostic, false-positive-free. Verified: node probe.js "buggy caught = true | correct clean = 0"; python3 probe.py "buggy caught = True | private-slot leak caught = True | correct clean = True". Proof artifact, not normative, not run by CI. - tests/test-skill-contracts.sh: CT-AASC-10 (gating proven-upgrade, both twins, dual-lever: folded-gate phrase present + "ASSUMED, not proven" removed), CT-AASC-11 (oracle from input pairs), CT-AASC-12 (private/internal slots + FULL reflected set, doc + both twins), RED-first. Tests: test-skill-contracts 850/850, path-consistency 144/144, twins byte-identical, ShellCheck clean, CT-DECONTAM-1 zero product-instance hits (the gating upgrade + corpus directive name no key literal; forced-text grep over both twins + the doc = 0). Honest scope: the gating upgrade inherits the already-validated two-tier gate (no new over-FAIL risk -- the wide-boundary => advisory arm is unchanged); the corpus completeness + oracle-independence are robustness hardening. None of this eliminates the AASC sweep's run-to-run variance (that needs the deferred runtime hook). A live (b)-leaky-narrow + (b)-wide A/B dogfood is owed as follow-up confirmation of the gating upgrade (validated-by-inheritance + constructive-proof; not a blocker). Co-Authored-By: Claude Opus 4.8 (1M context) --- agents/ac-evaluator-hi.md | 11 +- agents/ac-evaluator.md | 11 +- design-oracles/aasc-keyfaith/README.md | 69 ++++++ design-oracles/aasc-keyfaith/probe.js | 221 ++++++++++++++++++ design-oracles/aasc-keyfaith/probe.py | 158 +++++++++++++ .../accept-set-conformance-harness.md | 41 ++-- tests/test-skill-contracts.sh | 41 +++- 7 files changed, 530 insertions(+), 22 deletions(-) create mode 100644 design-oracles/aasc-keyfaith/README.md create mode 100644 design-oracles/aasc-keyfaith/probe.js create mode 100644 design-oracles/aasc-keyfaith/probe.py diff --git a/agents/ac-evaluator-hi.md b/agents/ac-evaluator-hi.md index 78d1421..b051076 100644 --- a/agents/ac-evaluator-hi.md +++ b/agents/ac-evaluator-hi.md @@ -436,12 +436,15 @@ single pass under-checks: **MR-CANONICAL** (a structurally-valid-but-non-canonical form the writer would never emit must be rejected or normalized-idempotent), and **MR-KEYFAITH** (a reserved / accessor / colliding key must not mutate host-structure metadata or - be silently dropped — **ASSUMED, not proven**: treat an MR-KEYFAITH divergence - as advisory unless a concrete drop / mutation is observed. For the CORPUS you + be silently dropped — a CONCRETE round-trip-faithfulness violation (a drop, an + overwrite, or a host-metadata mutation) on a lossless / strict keyed boundary + is subject to the SAME standard two-tier oracle-authoritative FAIL gating as the + other MRs (below), not a weaker advisory-only floor. For the CORPUS you MUST DERIVE the candidate key corpus BY REFLECTION over the structure's own - type / prototype — its reserved, accessor, and method names — so your generator + type / prototype — its reserved, accessor, method, AND private / internal slot + names (the FULL reflected set, never truncated or sliced) — so your generator names NO key and hard-codes NO key list; it enumerates via reflection, so every - reserved / accessor / colliding key is covered for ALL inputs, plus the generic + reserved / accessor / colliding / private-slot key is covered for ALL inputs, plus the generic structural hostiles (an empty key, a duplicate of an existing key, a key that collides after the structure's normalization), and you diff against an independent round-trip-faithfulness oracle diff --git a/agents/ac-evaluator.md b/agents/ac-evaluator.md index afa60ab..e7662f5 100644 --- a/agents/ac-evaluator.md +++ b/agents/ac-evaluator.md @@ -436,12 +436,15 @@ single pass under-checks: **MR-CANONICAL** (a structurally-valid-but-non-canonical form the writer would never emit must be rejected or normalized-idempotent), and **MR-KEYFAITH** (a reserved / accessor / colliding key must not mutate host-structure metadata or - be silently dropped — **ASSUMED, not proven**: treat an MR-KEYFAITH divergence - as advisory unless a concrete drop / mutation is observed. For the CORPUS you + be silently dropped — a CONCRETE round-trip-faithfulness violation (a drop, an + overwrite, or a host-metadata mutation) on a lossless / strict keyed boundary + is subject to the SAME standard two-tier oracle-authoritative FAIL gating as the + other MRs (below), not a weaker advisory-only floor. For the CORPUS you MUST DERIVE the candidate key corpus BY REFLECTION over the structure's own - type / prototype — its reserved, accessor, and method names — so your generator + type / prototype — its reserved, accessor, method, AND private / internal slot + names (the FULL reflected set, never truncated or sliced) — so your generator names NO key and hard-codes NO key list; it enumerates via reflection, so every - reserved / accessor / colliding key is covered for ALL inputs, plus the generic + reserved / accessor / colliding / private-slot key is covered for ALL inputs, plus the generic structural hostiles (an empty key, a duplicate of an existing key, a key that collides after the structure's normalization), and you diff against an independent round-trip-faithfulness oracle diff --git a/design-oracles/aasc-keyfaith/README.md b/design-oracles/aasc-keyfaith/README.md new file mode 100644 index 0000000..3c5852c --- /dev/null +++ b/design-oracles/aasc-keyfaith/README.md @@ -0,0 +1,69 @@ +# AASC MR-KEYFAITH (class b) — design-oracle (proof prototype) + +This directory is a **committed design-oracle**: a runnable proof that the +**class (b) MR-KEYFAITH** mechanism — a reflection-derived dangerous-key corpus +that names no key literal, paired with an independent round-trip-faithfulness +oracle — is language-agnostic, constructive, and false-positive-free. It is the +keyed-structure (K-axis) sibling of `../aasc-accept-set/` (the MR-ALPHABET / +class (c) proof). It is a **proof artifact, not normative plugin content** — the +mechanism's prose lives in `skills/impl/references/accept-set-conformance-harness.md` +(§ The worked MR-KEYFAITH (b) shape) and the `ac-evaluator` / `ac-evaluator-hi` +L-ROBUSTNESS lens. Nothing here is run by the test suites or by CI. + +## What it proves + +The probes pair an **independent round-trip-faithfulness oracle** with a +**reflection-derived key corpus**: + +- The oracle computes the expectation **from the INPUT PAIRS by last-write-wins** + and **never reads it back out of the builder** — so a builder that drops or + overwrites a key cannot "agree with itself" (the circular-oracle trap). It then + checks every input key reads back ITS value through the public getter, and that + `build(serialize(x))` preserves the same observable mapping (the round-trip leg). +- The key generator **DERIVES** the dangerous accessor / reserved / **private / + internal slot** names **BY REFLECTION** over the live host structures (JS: + `Object.getOwnPropertySymbols` + climbing `getPrototypeOf` collecting + `Object.getOwnPropertyNames`; Python: `dir(type(target))` + walking + `type(target).__mro__` and collecting each base's `vars(base)` keys), **naming + no key literal in the generator** — exactly as the MR-ALPHABET probe selects + digits by the Unicode decimal-digit PROPERTY and names no script. Plus the + generic structural hostiles (empty key, duplicate of an existing key, a + normalization-collision partner derived from an existing key). + +Each probe runs a CORRECT builder (a null-prototype container / a dict-backed +store — the key namespace cannot collide with the structure's reserved slots) and +a BUGGY builder (a plain `{}` with `obj[k]=v`, plus a nested deep-assign variant / +a class doing `setattr` per pair into attribute space) **black-box** over the +reflected corpus, and diffs every verdict against the oracle. + +The boundary under test (an in-memory keyed store rebuilt from `(key, value)` +pairs) is **illustrative only** — illustrative on both the domain axis and the +language axis; the mechanism (reflection-derived corpus × independent round-trip +oracle) is the point, not the example. + +## Results (reproducible) + +- `node probe.js` — the buggy plain-`{}` builder is caught: an input key that + shadows a prototype slot is not stored as a faithful own-property mapping (the + flat and deep variants both surface the violation). The correct + `Object.create(null)` builder (flat and deep) has **zero** oracle-disagreements + (no false-positive storm). +- `python3 probe.py` — the buggy `setattr`-into-attribute-space builder leaks its + **private / internal slot** collisions (the input key collides with the + instance's own internal storage slots, surfaced by the reflection-derived + corpus that includes those names), **caught by construction** with the generator + naming no key. The correct dict-backed store has **zero** oracle-disagreements. + +The same methodology (independent round-trip-faithfulness oracle × reflection- +derived corpus naming no key) catches each language's *actual* keyed-structure +leak class — prototype-slot shadowing for the plain-object builder, internal-slot +collision for the attribute-space builder — with one oracle and no false +positives. That is the language-agnostic, constructive, false-positive-free +property the class (b) MR-KEYFAITH mechanism rests on. + +## Run + +``` +node design-oracles/aasc-keyfaith/probe.js +python3 design-oracles/aasc-keyfaith/probe.py +``` diff --git a/design-oracles/aasc-keyfaith/probe.js b/design-oracles/aasc-keyfaith/probe.js new file mode 100644 index 0000000..e516693 --- /dev/null +++ b/design-oracles/aasc-keyfaith/probe.js @@ -0,0 +1,221 @@ +'use strict'; +// AASC MR-KEYFAITH confidence probe (JS). Class (b): a KEYED structure rebuilt +// from untrusted (key, value) input pairs. Advertised contract: round-trip +// faithfulness — every key the inputs asked for returns ITS value unchanged +// (last-write-wins for a repeated key), no silent drop, no host-metadata bleed, +// and build(serialize(x)) preserves the same observable mapping. +// +// The oracle is SPEC-DERIVED and INDEPENDENT of every builder: it computes the +// expectation from the INPUT PAIRS by last-write-wins and NEVER reads it back out +// of a builder (the circular-oracle trap). The key generator names NO key literal: +// it DERIVES the dangerous accessor / reserved / private names BY REFLECTION over +// the live host structures, exactly as the (c) probe selects digits by the Unicode +// decimal-digit PROPERTY and names no script. +// +// Two self-consistent comparisons share one corpus of reflected keys: +// FLAT — obj[k]=v, oracle = flat last-write-wins map. +// DEEP — a nested "k.split('.')" deep-assign variant, oracle = deep +// last-write-wins map. Each oracle matches its builders' key model, so a +// CORRECT builder is a clean zero in both. + +const MISSING = Symbol('MISSING'); + +// ===================== FLAT comparison ===================== + +// Independent flat oracle: expectation from the INPUT PAIRS by last-write-wins. +function oracleFlat(pairs, build, get, serialize) { + const expected = new Map(); + for (const [k, v] of pairs) expected.set(k, v); // later pair for a repeated key wins + const built = build(pairs); + for (const [k, want] of expected) { + if (get(built, k) !== want) return false; // silent drop or wrong-value overwrite + } + const again = build(serialize(built)); // round-trip: serialize then build + for (const [k, want] of expected) { + if (get(again, k) !== want) return false; + } + return true; +} + +// CORRECT: a null-prototype container — no inherited accessor / reserved slot can +// be shadowed or mutated; every own key round-trips. +function buildFlatCorrect(pairs) { + const o = Object.create(null); + for (const [k, v] of pairs) o[String(k)] = v; // last-write-wins + return o; +} +// BUGGY: a plain {} — an accessor / reserved name (read off the live host by +// reflection) can shadow a prototype slot, return the inherited value, or mutate +// host-structure metadata instead of storing the pair. +function buildFlatBuggy(pairs) { + const o = {}; // inherits the host object prototype + for (const [k, v] of pairs) o[String(k)] = v; + return o; +} +function getFlat(o, k) { + return Object.prototype.hasOwnProperty.call(o, k) ? o[k] : MISSING; // own-property read only +} +function serializeFlat(o) { + return Object.keys(o).map(k => [k, o[k]]); // own enumerable wire form +} + +// ===================== DEEP comparison ===================== + +// Independent deep oracle: nested last-write-wins map keyed by "k.split('.')". +function setDeep(map, segs, v) { + let cur = map; + for (let i = 0; i < segs.length - 1; i++) { + const s = segs[i]; + if (!(cur.get(s) instanceof Map)) cur.set(s, new Map()); + cur = cur.get(s); + } + cur.set(segs[segs.length - 1], v); +} +function getDeep(map, segs) { + let cur = map; + for (let i = 0; i < segs.length - 1; i++) { + const s = segs[i]; + if (!(cur instanceof Map) || !cur.has(s)) return MISSING; + cur = cur.get(s); + } + return (cur instanceof Map && cur.has(segs[segs.length - 1])) ? cur.get(segs[segs.length - 1]) : MISSING; +} +function oracleDeep(pairs, build, getPath, serialize) { + const expected = new Map(); + for (const [k, v] of pairs) setDeep(expected, String(k).split('.'), v); + const built = build(pairs); + const want = []; + (function walk(m, prefix) { + for (const [k, v] of m) { + if (v instanceof Map) walk(v, prefix.concat(k)); + else want.push([prefix.concat(k), v]); + } + })(expected, []); + for (const [segs, v] of want) { + if (getPath(built, segs) !== v) return false; + } + const again = build(serialize(built)); + for (const [segs, v] of want) { + if (getPath(again, segs) !== v) return false; + } + return true; +} + +// CORRECT deep: null-proto at every level — no reserved slot collision. +function buildDeepCorrect(pairs) { + const root = Object.create(null); + for (const [k, v] of pairs) { + const segs = String(k).split('.'); + let cur = root; + for (let i = 0; i < segs.length - 1; i++) { + const s = segs[i]; + if (typeof cur[s] !== 'object' || cur[s] === null) cur[s] = Object.create(null); + cur = cur[s]; + } + cur[segs[segs.length - 1]] = v; + } + return root; +} +// BUGGY deep: deep-assign onto plain {} — a reserved segment pollutes / shadows. +function buildDeepBuggy(pairs) { + const root = {}; + for (const [k, v] of pairs) { + const segs = String(k).split('.'); + let cur = root; + for (let i = 0; i < segs.length - 1; i++) { + const s = segs[i]; + if (typeof cur[s] !== 'object' || cur[s] === null) cur[s] = {}; + cur = cur[s]; + } + cur[segs[segs.length - 1]] = v; + } + return root; +} +function getDeepPath(root, segs) { + let cur = root; + for (let i = 0; i < segs.length - 1; i++) { + const s = segs[i]; + if (typeof cur !== 'object' || cur === null || !Object.prototype.hasOwnProperty.call(cur, s)) return MISSING; + cur = cur[s]; + } + const last = segs[segs.length - 1]; + return (typeof cur === 'object' && cur !== null && Object.prototype.hasOwnProperty.call(cur, last)) ? cur[last] : MISSING; +} +function serializeDeep(root) { + const out = []; + (function walk(o, prefix) { + for (const k of Object.keys(o)) { + const v = o[k]; + if (v && typeof v === 'object' && !Array.isArray(v)) walk(v, prefix.concat(k)); + else out.push([prefix.concat(k).join('.'), v]); + } + })(root, []); + return out; +} + +// ===================== REFLECTION-DERIVED key generator (NAMES NO KEY LITERAL) ===================== +// Climb the prototype chain of live host structures, collecting every own property +// name + symbol at every level. The accessor / reserved / private slot names are +// whatever the runtime exposes — no denylist, no hard-coded key. +function reflectHostileKeys() { + const keys = new Set(); + for (const target of [{}, new Map(), []]) { + for (let p = target; p; p = Object.getPrototypeOf(p)) { + for (const n of Object.getOwnPropertyNames(p)) keys.add(n); + for (const s of Object.getOwnPropertySymbols(p)) keys.add(s); + } + } + return keys; +} +function makeKeyCorpus(existingKeys) { + const hostile = reflectHostileKeys(); // reflection-derived accessor / reserved names + const generic = new Set(); + generic.add(''); // empty key (generic structural hostile) + if (existingKeys.length) generic.add(existingKeys[0]); // duplicate of an existing key + for (const k of existingKeys) { // normalized-collision partner, no literal pair + if (typeof k === 'string' && k !== k.normalize('NFC')) { generic.add(k.normalize('NFC')); break; } + } + return [...hostile, ...generic].filter(k => typeof k === 'string'); // symbols have no string wire form +} + +// Synthetic-value pairs; the candidate key is the only variable (+ a repeat for +// last-write-wins). Benign anchors must always round-trip. +const seedKeys = ['alpha', 'beta']; +const hostileKeys = makeKeyCorpus(seedKeys); +const flatPairs = (k) => [['alpha', 1], ['beta', 2], [k, 'V:' + k], [k, 'V2:' + k]]; +const deepPairs = (k) => [['x.alpha', 1], ['x.beta', 2], [k, 'V:' + k], [k, 'V2:' + k]]; + +function run(build, get, serialize, oracle, pairsFor) { + const violations = []; + for (const k of hostileKeys) { + let ok; + try { ok = oracle(pairsFor(k), build, get, serialize); } + catch (_) { violations.push({ k, reason: 'threw' }); continue; } + if (!ok) violations.push({ k, reason: 'unfaithful' }); + } + return violations; +} + +const flatBuggyV = run(buildFlatBuggy, getFlat, serializeFlat, oracleFlat, flatPairs); +const flatCorrectV = run(buildFlatCorrect, getFlat, serializeFlat, oracleFlat, flatPairs); +const deepBuggyV = run(buildDeepBuggy, getDeepPath, serializeDeep, oracleDeep, deepPairs); +const deepCorrectV = run(buildDeepCorrect, getDeepPath, serializeDeep, oracleDeep, deepPairs); + +const hex = (k) => [...k].map(c => 'U+' + c.codePointAt(0).toString(16).toUpperCase().padStart(4, '0')).join(''); +const sample = (a, n) => a.slice(0, n).map(x => JSON.stringify(x.k) + '(' + hex(x.k) + ',' + x.reason + ')').join(', '); + +console.log('== JS probe :: class (b) MR-KEYFAITH — keyed structure round-trip faithfulness =='); +console.log('reflection-derived hostile keys (string-serializable):', hostileKeys.length, '| names no key literal in generator'); +console.log('-- BUGGY builder (plain {} + obj[k]=v, flat) --'); +console.log(' faithfulness violations (caught by oracle):', flatBuggyV.length); +console.log(' sample:', sample(flatBuggyV, 8)); +console.log('-- BUGGY builder (deep-assign onto plain {}) --'); +console.log(' faithfulness violations (caught by oracle):', deepBuggyV.length); +console.log(' sample:', sample(deepBuggyV, 8)); +console.log('-- CORRECT builder (Object.create(null), flat) --'); +console.log(' oracle disagreements:', flatCorrectV.length, '->', flatCorrectV.length === 0 ? 'false-positive-storm ABSENT (0)' : 'STORM PRESENT'); +console.log('-- CORRECT builder (deep null-proto) --'); +console.log(' oracle disagreements:', deepCorrectV.length, '->', deepCorrectV.length === 0 ? 'false-positive-storm ABSENT (0)' : 'STORM PRESENT'); +const buggyCaught = flatBuggyV.length > 0 && deepBuggyV.length > 0; +const correctClean = flatCorrectV.length + deepCorrectV.length; +console.log('VERDICT JS: buggy caught =', buggyCaught, '| correct clean =', correctClean); diff --git a/design-oracles/aasc-keyfaith/probe.py b/design-oracles/aasc-keyfaith/probe.py new file mode 100644 index 0000000..cd37682 --- /dev/null +++ b/design-oracles/aasc-keyfaith/probe.py @@ -0,0 +1,158 @@ +# AASC MR-KEYFAITH confidence probe (Python). Class (b): a KEYED structure rebuilt +# from untrusted (key, value) input pairs. Advertised contract: round-trip +# faithfulness — every key the inputs asked for returns ITS value unchanged +# (last-write-wins for a repeated key), no silent drop, no internal-slot bleed, +# and build(serialize(x)) preserves the same observable mapping. +# +# The oracle is SPEC-DERIVED and INDEPENDENT of both builders: it computes the +# expectation from the INPUT PAIRS by last-write-wins and NEVER reads it back out +# of a builder (the circular-oracle trap). The key generator names NO key literal: +# it DERIVES the dangerous reserved / accessor / private-slot names BY REFLECTION +# over the live type (dir + the __mro__ vars walk), exactly as the (c) probe +# selects digits by the Unicode decimal-digit PROPERTY and names no script. +import json + +_MISSING = object() + + +# ---- Independent round-trip-faithfulness oracle (no builder reuse) ---- +# `expected` is derived ONLY from the input pairs (last-write-wins). It is never +# read out of a builder, so a builder that drops a key cannot "agree with itself". +def oracle_faithful(pairs, build, get, serialize): + expected = {} + for k, v in pairs: + expected[k] = v # later pair for a repeated key wins + built = build(pairs) + for k, want in expected.items(): + if get(built, k) != want: # silent drop or wrong-value overwrite + return False + again = build(serialize(built)) # round-trip: serialize then build + for k, want in expected.items(): + if get(again, k) != want: + return False + return True + + +# ---- Builders under test ---- +# BUGGY: a class that does setattr per pair into ATTRIBUTE space — an input key +# that collides with the class's own reserved / accessor / private slot name (read +# off the live type by reflection) overwrites that slot or is shadowed by it, +# instead of being stored as data. Reads come back through getattr. +class _AttrStore: + def __init__(self, pairs): + for k, v in pairs: + setattr(self, str(k), v) # last-write-wins, but pollutes attribute space + + +def build_buggy(pairs): + return _AttrStore(pairs) + + +def get_buggy(store, k): + return getattr(store, k, _MISSING) + + +def serialize_buggy(store): + # wire form = the instance's own __dict__ items (data attributes only). + return list(vars(store).items()) + + +# CORRECT: a dict-backed store — keys live in a data namespace that cannot collide +# with the type's reserved / accessor / private slots; every key round-trips. +class _DictStore: + def __init__(self, pairs): + self._d = {} + for k, v in pairs: + self._d[str(k)] = v # last-write-wins, isolated namespace + + +def build_correct(pairs): + return _DictStore(pairs) + + +def get_correct(store, k): + return store._d.get(k, _MISSING) + + +def serialize_correct(store): + return list(store._d.items()) + + +# ---- REFLECTION-DERIVED key generator (NAMES NO KEY LITERAL) ---- +# Read the reserved / accessor / private-slot names off the live types by +# reflection — dir(type(target)) plus walking type(target).__mro__ and collecting +# each base's vars(base) keys. This INCLUDES private / internal slot names +# (leading-underscore / name-mangled / dunder); no name is hard-coded. +def reflect_hostile_keys(): + keys = set() + for target in ({}, [], _AttrStore([]), _DictStore([])): # live host structures + t = type(target) + keys.update(dir(t)) # the type's own method + accessor + dunder names + for base in t.__mro__: # walk the resolution order to the root + keys.update(vars(base).keys()) # each ancestor's own attribute names (incl private slots) + return keys + + +def make_key_corpus(existing_keys): + hostile = reflect_hostile_keys() # reflection-derived reserved / accessor / private names + generic = set() + generic.add('') # empty key (generic structural hostile) + if existing_keys: + generic.add(next(iter(existing_keys))) # duplicate of an existing key + # normalized-collision partner: derived from an existing key, no literal pair. + for k in existing_keys: + if isinstance(k, str) and k != k.casefold(): + generic.add(k.casefold()) + break + return hostile | generic + + +seed_keys = ['alpha', 'Beta'] # benign anchors that must always round-trip +hostile_keys = sorted(k for k in make_key_corpus(seed_keys) if isinstance(k, str)) + + +def pairs_for(k): + # benign anchors + candidate key (synthetic value) + repeated key (last-write-wins). + return [('alpha', 1), ('Beta', 2), (k, 'V:' + k), (k, 'V2:' + k)] + + +def run(build, get, serialize): + violations = [] + for k in hostile_keys: + pairs = pairs_for(k) + try: + ok = oracle_faithful(pairs, build, get, serialize) + except Exception as e: + violations.append((k, 'threw:' + type(e).__name__)) + continue + if not ok: + violations.append((k, 'unfaithful')) + return violations + + +def hexs(s): + return ''.join('U+%04X' % ord(c) for c in s) + + +def sample(a, n): + return ', '.join(json.dumps(k) + '(' + hexs(k) + ',' + r + ')' for k, r in a[:n]) + + +buggy_v = run(build_buggy, get_buggy, serialize_buggy) +correct_v = run(build_correct, get_correct, serialize_correct) +priv_caught = [(k, r) for k, r in buggy_v if k.startswith('_')] + +print('== PY probe :: class (b) MR-KEYFAITH — keyed structure round-trip faithfulness ==') +print('reflection-derived hostile keys:', len(hostile_keys), '| names no key literal in generator') +print('-- BUGGY builder (setattr into attribute space) --') +print(' faithfulness violations (caught by oracle):', len(buggy_v)) +print(' sample:', sample(buggy_v, 10)) +print(' private/internal-slot collisions among catches:', len(priv_caught), + ('(e.g. ' + sample(priv_caught, 4) + ')') if priv_caught else '') +print('-- CORRECT builder (dict-backed store) --') +dis = len(correct_v) +print(' oracle disagreements:', dis, '->', + 'false-positive-storm ABSENT (0)' if dis == 0 else 'STORM PRESENT') +print('VERDICT PY: buggy caught =', len(buggy_v) > 0, + '| private-slot leak caught =', len(priv_caught) > 0, + '| correct clean =', dis == 0) diff --git a/skills/impl/references/accept-set-conformance-harness.md b/skills/impl/references/accept-set-conformance-harness.md index 92145cc..05e7446 100644 --- a/skills/impl/references/accept-set-conformance-harness.md +++ b/skills/impl/references/accept-set-conformance-harness.md @@ -110,16 +110,18 @@ def make_corpus(): - **MR-CANONICAL** — a structurally-valid-but-non-canonical form the canonical Writer would never emit (`01`, `0255`) must be rejected OR be normalized-idempotent (`f(f(x)) == f(x)` and `f(x)` is the canonical form). -- **MR-KEYFAITH** — *(ASSUMED, not proven)* a reserved / accessor / colliding key - in a K-axis structure must not mutate host-structure metadata or be silently - dropped. The structural-key reflection this hypothesises is unverified; treat - an MR-KEYFAITH divergence as advisory unless a concrete drop / mutation is - observed. The copyable shape for this class lives in +- **MR-KEYFAITH** — a reserved / accessor / colliding key in a K-axis structure + must not mutate host-structure metadata or be silently dropped. A CONCRETE + round-trip-faithfulness violation (a drop, an overwrite, or a host-metadata + mutation) is subject to the SAME oracle-authoritative two-tier FAIL gating as + the other MRs (see [§ FAIL gating](#fail-gating--oracle-authoritative-two-tier-no-false-positive-storm) + below): a violation on a lossless / strict keyed boundary the oracle + authoritatively narrows is a FAIL; a legitimately-WIDE keyed boundary (arbitrary + keys accepted by contract, last-write-wins, no protected metadata) is advisory + (`authoritative=n`, a Caveat). The copyable shape for this class lives in [§ The worked MR-KEYFAITH (b) shape](#the-worked-mr-keyfaith-b-shape-reflection-derived-keyed-structure) below — a reflection-derived key generator paired with an independent - round-trip-faithfulness oracle. Reaching for it does **not** upgrade the gating: - the generated divergence stays advisory (`authoritative=n`, a Caveat) unless the - black-box diff exhibits a concrete drop / overwrite / host-metadata mutation. + round-trip-faithfulness oracle. ## The worked MR-KEYFAITH (b) shape reflection-derived keyed structure @@ -133,13 +135,20 @@ This subsection gives MR-KEYFAITH the same copyable structure as MR-ALPHABET, fo a K-axis structure built from untrusted `(key, value)` input pairs. It is **illustrative only** on both the domain axis and the language axis; transcribe the ROLES (independent round-trip-faithfulness oracle; reflection-derived -generator; black-box diff), not the surface domain. Gating is unchanged: the -divergence this produces is advisory unless the diff shows a concrete drop / -overwrite / host-metadata mutation (see the MR-KEYFAITH bullet above). +generator; black-box diff), not the surface domain. Gating follows the shared two-tier gate (see the MR-KEYFAITH bullet +above): a concrete drop / overwrite / host-metadata mutation on a lossless / +strict keyed boundary the oracle authoritatively narrows is a FAIL; a +legitimately-wide keyed boundary is advisory. The oracle is **round-trip-faithfulness** and is INDEPENDENT of the builder: it reasons only from the input PAIRS and never calls the builder under test to -decide what is correct. +decide what is correct. The expectation is +computed from the INPUT PAIRS by last-write-wins; it is NEVER read back out of the +builder (the dogfood-50 trap: +deriving `expected` by re-invoking the builder makes the oracle circular — a +builder that drops a key would "agree with itself"). The round-trip leg below +re-runs the builder only to confirm SERIALIZE then BUILD stability; the truth it is +diffed against stays the pairs-derived mapping, never the builder's own output. ```python # ILLUSTRATIVE ONLY (neutral domain, Python): round-trip faithfulness for a @@ -169,7 +178,13 @@ def oracle_faithful(pairs, build, get, serialize, MISSING=object()): The generator DERIVES the host structure's own reserved / accessor key names BY REFLECTION at runtime and names no key literal — exactly as MR-ALPHABET selects -by the decimal-digit PROPERTY and names no script. The reflection API calls +by the decimal-digit PROPERTY and names no script. The reflected set MUST include +the structure's own private / internal slot names (the leading-underscore / +name-mangled / non-public attribute names), not only its public methods and +dunders — a private-slot collision (an input key that shadows the structure's own +internal storage slot) is a real drop / overwrite class, and reflection already +exposes those names, so enumerate the FULL reflected set, never a truncated or +sliced subset. The reflection API calls (below) are introspection plumbing, not key literals; the dangerous names are whatever the live host happens to expose, so the source stays decontaminated. diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index d34ab2f..2fb5c85 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -10307,7 +10307,7 @@ assert_true \ # enumerate-by-PROPERTY/names-NO-script directive (which reached astral breadth in dogfood47). This brings the MR-KEYFAITH # CORPUS directive to (c)-parity: a MUST to DERIVE the candidate key corpus BY REFLECTION (naming NO key literal, exactly as # MR-ALPHABET selects by the decimal-digit PROPERTY) so every reserved / accessor / colliding key is covered for ALL inputs. -# The GATING qualifier (**ASSUMED, not proven** ... advisory) is UNCHANGED this round. Net-new token +# The GATING qualifier was upgraded to the shared two-tier gate in a later round (see CT-AASC-10). Net-new token # 'DERIVE the candidate key corpus BY REFLECTION' is HEAD=0 (RED-first). Twins byte-identical. Stays decontam-clean: the # directive names no key-literal denylist token (CT-DECONTAM-1 must remain 0 hits). aasc9_tok='DERIVE the candidate key corpus BY REFLECTION' @@ -10319,6 +10319,45 @@ assert_true \ "CT-AASC-9 ((c)-parity MR-KEYFAITH CORPUS directive: derive-by-reflection, both twins): directive present in ac-evaluator ($aasc9_a>=1) AND -hi ($aasc9_b>=1)" \ "$aasc9_result" +# CT-AASC-10 (MR-KEYFAITH gating proven-upgrade, both twins; (b)-finish round). +# LOAD-BEARING: the MR-KEYFAITH lens shipped its divergence as **ASSUMED, not proven** / advisory-only, a WEAKER +# floor than the other MRs. A concrete round-trip-faithfulness violation (a drop / overwrite / host-metadata mutation) +# on a lossless / strict keyed boundary is now folded into the SAME standard two-tier oracle-authoritative FAIL gating +# as MR-FINITE / MR-ALPHABET / MR-CANONICAL. This pins the folded-gate phrase present in BOTH twins AND the removal of +# the old **ASSUMED, not proven** qualifier (RED-first: HEAD ships the ASSUMED text and not the folded phrase). +aasc10_tok='SAME standard two-tier oracle-authoritative FAIL gating as the' +aasc10_a=$(grep -cF "$aasc10_tok" "$ACEV_EV" || true) +aasc10_b=$(grep -cF "$aasc10_tok" "$ACEVHI_EV" || true) +aasc10_old_a=$(grep -cF 'ASSUMED, not proven' "$ACEV_EV" || true) +aasc10_old_b=$(grep -cF 'ASSUMED, not proven' "$ACEVHI_EV" || true) +aasc10_result="false" +if [ "$aasc10_a" -ge 1 ] && [ "$aasc10_b" -ge 1 ] && [ "$aasc10_old_a" -eq 0 ] && [ "$aasc10_old_b" -eq 0 ]; then aasc10_result="true"; fi +assert_true "CT-AASC-10 (MR-KEYFAITH gating proven-upgrade, both twins): folded-gate phrase acev ($aasc10_a>=1) hi ($aasc10_b>=1), ASSUMED removed acev ($aasc10_old_a=0) hi ($aasc10_old_b=0)" "$aasc10_result" + +# CT-AASC-11 (round-trip oracle from input-pairs last-write-wins; harness doc). +# LOAD-BEARING: the worked MR-KEYFAITH (b) oracle must compute its expectation FROM THE INPUT PAIRS by last-write-wins, +# never by reading it back out of the builder (the dogfood-50 circular-oracle trap). This pins the net-new phrase in the +# harness doc (RED-first: HEAD=0 for the phrase). +aasc11_c=$(grep -cF 'computed from the INPUT PAIRS by last-write-wins' "$AASC_DOC" 2>/dev/null || true) +aasc11_result="false" +if [ "$aasc11_c" -ge 1 ]; then aasc11_result="true"; fi +assert_true "CT-AASC-11 (round-trip oracle from input-pairs last-write-wins): net-new phrase in harness doc ($aasc11_c>=1)" "$aasc11_result" + +# CT-AASC-12 (reflection corpus incl private/internal slots + FULL set; doc + both twins). +# LOAD-BEARING: a private-slot collision (an input key shadowing the structure's own internal storage slot) is a real +# drop / overwrite class reflection already exposes, so the reflected corpus MUST be the FULL reflected set (never sliced) +# and MUST include private / internal slot names. Pins both net-new tokens ('private / internal slot' + 'FULL reflected +# set') across the harness doc AND both twins (RED-first: HEAD=0). Stays decontam-clean: no key-literal denylist token. +aasc12_doc=$(grep -cF 'private / internal slot names' "$AASC_DOC" 2>/dev/null || true) +aasc12_acev=$(grep -cF 'private / internal slot' "$ACEV_EV" || true) +aasc12_hi=$(grep -cF 'private / internal slot' "$ACEVHI_EV" || true) +aasc12_doc_full=$(grep -cF 'FULL reflected set' "$AASC_DOC" 2>/dev/null || true) +aasc12_acev_full=$(grep -cF 'FULL reflected set' "$ACEV_EV" || true) +aasc12_hi_full=$(grep -cF 'FULL reflected set' "$ACEVHI_EV" || true) +aasc12_result="false" +if [ "$aasc12_doc" -ge 1 ] && [ "$aasc12_acev" -ge 1 ] && [ "$aasc12_hi" -ge 1 ] && [ "$aasc12_doc_full" -ge 1 ] && [ "$aasc12_acev_full" -ge 1 ] && [ "$aasc12_hi_full" -ge 1 ]; then aasc12_result="true"; fi +assert_true "CT-AASC-12 (reflection corpus incl private/internal slots + FULL set, doc+both twins): private-slot doc ($aasc12_doc) acev ($aasc12_acev) hi ($aasc12_hi); FULL-set doc ($aasc12_doc_full) acev ($aasc12_acev_full) hi ($aasc12_hi_full)" "$aasc12_result" + echo "" From fdbbf7401db23cd266d93c74648035602ede9957 Mon Sep 17 00:00:00 2001 From: aimsise Date: Thu, 18 Jun 2026 21:24:55 +0900 Subject: [PATCH 11/15] feat(eval): AASC determinism hook -- deterministic post-hoc accept-set-sweep conformance gate (metric-only) + 3-spawner kill switch Closes the #1 AASC residual: run-to-run VARIANCE. The accept-set sweep and its self-incrimination rule are ALREADY normative MUST in the ac-evaluator lens ("an `## Accept-set sweep` line with `ran=n`, or with `ran=y astral=n`, is a NON-CONFORMANT shallow sweep"), yet live dogfoods leaked them run-to-run because the rule is honoured only by the model RECOGNISING it (dogfood49 stood the K-axis sweep down on a subject dogfood48/50 had swept). A hook is the only lever independent of model recognition. Triaged adversarially (multi-agent): of 8 candidate items only ONE is a genuinely additive lever -- a runtime hook that reads an already-emitted artifact and gates deterministically. Prose-only items (stderr-twin, oracle-roundtrip tightening, private-slot mandate) were rejected as recognition-gated theater per charter section H; a spawn-prompt-rewriting "grep promotion" was rejected as infeasible (no hookable event between trigger-compute and subagent-spawn -- the cron-create wall); a cross-language negative-control proof was DEFERRED (no rustc/cargo/go on this host -- faking it would violate the don't-claim-unrun rule). - hooks/accept-set-verify.sh (new): PostToolUse(Write|Edit) gate over the persisted `## Accept-set sweep` section of an eval-round-{n}.md report. Reads the EMITTED 8-field line from disk and applies the lens's own rule with zero model recall: P1 stand-down (triggered=y ran=n, all axes), P2 shallow-astral (A/U axes), P3 sliced-corpus (A/U axes, < SW_AASC_CORPUS_FLOOR), P4 gating-consistency (authoritative divergence not driven to FAIL, all axes). P2/P3 are scoped to the alphabet/unicode axes (a reflection-derived key corpus for the K/W axes is legitimately small/ASCII, so flooring them would false-trip); caveat=no-runnable-artifact exempts P1/P2/P3 (compiled-language fail-open). Ships SW_ACCEPT_SET_CONFORMANCE_MODE=metric-only (fail-OPEN, exit code ALWAYS 0; unknown collapses to metric-only); `on` emits a PostToolUse decision:block surfacing the violated predicate to the evaluator. Skeleton (IN_PROGRESS) / n/a / non-eval / jq-missing all silent exit 0. - hooks/hooks.json: two top-level PostToolUse entries (Write + Edit) per the ordering rule. - skills/brief/references/policy-template.md, skills/create-ticket/references/autopilot-policy-reference.md, skills/impl/references/ac-evaluator-orchestration.md: the per-brief `constraints.accept_set_conformance` kill switch documented symmetrically across all 3 spawner surfaces (the field was already consumed by /impl Step 15 + honoured by the lens, but undocumented -- a half-wired L1/L2/L3 gap; mirrors constraints.refute_merge). - CLAUDE.md: SW_ACCEPT_SET_CONFORMANCE_MODE + SW_AASC_CORPUS_FLOOR env knobs. - tests/test-accept-set-verify.sh (new): 22 behaviour fixtures (every predicate, the no-runnable-artifact escape, K-axis no-false-trip, the dogfood50 clean shape no-false-positive, kill-switch tri-state, jq-absent fail-OPEN). - tests/test-skill-contracts.sh: CT-AASC-13 (hook registered >=2) + CT-AASC-14 (3-spawner policy-field parity), RED-first. Verify-by-construction BEFORE wiring: a /tmp fixture matrix proved the predicate gates correctly for ALL inputs (P1 reproduces the exact dogfood47/49 regression -> flagged; the dogfood50 clean shape -> NO false trip; K small-corpus + the no-runnable-artifact arm -> NOT over-blocked) -- and caught a real design bug (the no-runnable-artifact escape must exempt P3, not only P2) before any wiring. Tests: test-skill-contracts 852/852, test-path-consistency 144/144, test-accept-set-verify 22/22, ShellCheck --severity=warning clean, CT-DECONTAM-1 0 hits (14-file normative set; the hook + docs name no product/key/script literal), ac-evaluator twins byte-identical (CT-EV-MODEL-1; the GO set does not touch the twins). Honest scope: the hook catches STRUCTURAL self-incrimination (a triggered boundary not run / shallow / sliced), NOT field fabrication (a model could emit `ran=y astral=y corpus-size=750` without executing -- the R1 bound). It ships metric-only so the confirmation dogfood is its promotion gate and it cannot break the harness. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 + hooks/accept-set-verify.sh | 213 ++++++++++++++++++ hooks/hooks.json | 8 + skills/brief/references/policy-template.md | 1 + .../references/autopilot-policy-reference.md | 41 ++++ .../references/ac-evaluator-orchestration.md | 25 ++ tests/test-accept-set-verify.sh | 162 +++++++++++++ tests/test-skill-contracts.sh | 26 +++ 8 files changed, 478 insertions(+) create mode 100755 hooks/accept-set-verify.sh create mode 100755 tests/test-accept-set-verify.sh diff --git a/CLAUDE.md b/CLAUDE.md index caca4f3..913697d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,6 +36,8 @@ This rule was distilled from a v6.7.0 dogfood incident in which a verify hook ne - `SW_SAFETY_JQ_MISSING_MODE` — default `metric-only`. Controls the jq-missing preflight at the top of the three safety hooks (`hooks/pre-bash-safety.sh`, `hooks/pre-write-safety.sh`, `hooks/pre-edit-safety.sh`). `jq` is a documented hard dependency; when it is absent these guards cannot parse the tool payload and previously died with a silent `exit 127` (which Claude Code treats as a non-blocking error — a fail-OPEN). Values: `on` (fail **closed** — `exit 2` with an explicit `[SAFETY-JQ-MISSING] : jq not found …` message, blocking the tool call), `metric-only` (default — log `[SAFETY-JQ-MISSING] metric-only: … would fail closed …` to stderr and ALLOW the call with `exit 0`, so the shipped fail-open behaviour is unchanged but now observable), `off` (silently allow, `exit 0`, no message). Unknown values collapse to `metric-only` (the observe-only default — a typo never silently flips the guard to fail-closed). **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips on a jq-present host, set `=on` to enforce fail-closed. The `[SAFETY-JQ-MISSING]` exit-2 path is verified under a PATH-restricted (no-jq) test in `tests/test-pre-bash-safety.sh` / `tests/test-pre-write-safety.sh` / `tests/test-pre-edit-safety.sh` with the knob set to `on`. - `SW_BASH_STATE_GUARD_MODE` — default `metric-only`. Controls detection 3 of `hooks/pre-bash-contract-guard.sh` (the autopilot-context PreToolUse:Bash guard): a Bash-mediated state-file status mutation — `yq -i` / `sed -i` / shell-redirect on `autopilot-state.yaml` / `phase-state.yaml` that drives a `status:` (or `steps.`) to `skipped` / `completed` / `failed` / `in_progress`. The Write/Edit skip-transition guard (`hooks/pre-state-transition.sh`) is wired only to Write/Edit, so this closes the Bash bypass (ST-04). Values: `on` (emit `decision:block` with `unauthorized_state_mutate_bash` — deny the call), `metric-only` (default — log `[PRE-BASH-CONTRACT-GUARD] metric-only: would deny ...` to stderr and ALLOW), `off` (skip detection 3 entirely). Unknown values collapse to `metric-only`. Detections 1 (forbidden manual_bash_fallbacks rationale) and 2 (direct `git commit`) are NOT gated by this knob — the hook's existing NAC posture is preserved. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Read-only commands (`grep`/`cat`/`yq` without `-i`) and `runtime_metrics` appends (no status transition) are not matched. - `SW_STATE_FIELD_GUARD_MODE` — default `metric-only`. Gates the **HOOK_OWNED_FIELDS enforcement** in `hooks/pre-write-safety.sh` / `hooks/pre-edit-safety.sh`. The registry now ships with `.runtime_metrics` (an append-only telemetry list written exclusively by the six runtime-metrics writer hooks — Foundation 3 / ST-03), so a model Write/Edit that would clobber hook-appended `runtime_metrics` entries (a lost-update) is detectable. Values: `on` (emit `decision:block` whose reason NAMES the violated field — e.g. `.runtime_metrics` — and references `docs/state-schema.md`), `metric-only` (default — log `[STATE-FIELD-GUARD] metric-only: would block ...` to stderr and ALLOW, so populating the registry does NOT change the shipped allow-by-default behaviour), `off` (allow silently). Unknown values collapse to `metric-only`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Detection covers the inline `runtime_metrics: []` → `[…]` (and blank-out) form; a multi-line list mutation expressed without an inline value change is not detected (acceptable under the metric-only default). +- `SW_ACCEPT_SET_CONFORMANCE_MODE` — default `metric-only`. Controls `hooks/accept-set-verify.sh`, the PostToolUse(Write|Edit) gate that deterministically verifies the persisted `## Accept-set sweep` section of an `eval-round-{n}.md` report (the Advertised-Accept-Set Conformance observability line written by `agents/ac-evaluator.md`'s Persistence-First terminal rewrite). The hook reads the EMITTED line and applies the lens's OWN self-incrimination rule with zero model recall — flagging a triggered boundary not run (P1), an alphabet/unicode (A/U-axis) sweep that skipped the astral complement (P2) or used a corpus below `SW_AASC_CORPUS_FLOOR` (P3), or an authoritative divergence not driven to FAIL (P4). The keyed (K) / canonical-writer (W) axes are exempt from the astral/corpus floors (a reflection-derived key corpus is legitimately small), and `caveat=no-runnable-artifact` exempts P1/P2/P3 (a compiled-language fail-open degradation). Values: `on` (enforce — emit a PostToolUse `decision:block` whose reason names the violated predicate, surfacing it to the evaluator to re-run the sweep), `metric-only` (default — log `[ACCEPT-SET-VERIFY] metric-only: would block ...` to stderr and ALLOW, so the shipped behaviour is observe-only), `off` (explicit opt-out, silent). Unknown values collapse to `metric-only` (a typo neither enforces nor silently disables observation). The exit code is ALWAYS 0 (fail-OPEN — the hook can never break a Write/Edit; the only non-allow influence is the `on`-mode block JSON), and a missing `jq` is a silent `exit 0`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Verified by `tests/test-accept-set-verify.sh`. This is the runtime, recognition-independent half of the per-brief `constraints.accept_set_conformance` switch (which gates whether the EXECUTED sweep runs at all). +- `SW_AASC_CORPUS_FLOOR` — default `256`. The minimum corpus size for a P3 (sliced-corpus) flag in `hooks/accept-set-verify.sh`, applied ONLY to a `triggered=y ran=y` alphabet (A) or unicode-transform (U) boundary line — the axes whose mandated complement (the Unicode decimal-digit property across the BMP and astral planes) is naturally large. Lower it (e.g. `=8`) when a legitimately small advertised accept-set on an A/U boundary trips P3; raise it to demand a broader sweep. Honoured only when `SW_ACCEPT_SET_CONFORMANCE_MODE` is not `off`. ## Language diff --git a/hooks/accept-set-verify.sh b/hooks/accept-set-verify.sh new file mode 100755 index 0000000..f92cd3f --- /dev/null +++ b/hooks/accept-set-verify.sh @@ -0,0 +1,213 @@ +#!/usr/bin/env bash +# accept-set-verify.sh — PostToolUse(Write|Edit) hook. +# +# Deterministic post-hoc conformance gate over the PERSISTED `## Accept-set +# sweep` section of an `eval-round-{n}.md` report — the Advertised-Accept-Set +# Conformance (AASC) observability line written by the ac-evaluator's +# Persistence-First terminal rewrite (see agents/ac-evaluator.md +# `## Persistence-First Protocol` and the `## Failure-class panel` L-ROBUSTNESS +# lens, plus skills/impl/references/accept-set-conformance-harness.md). +# +# WHY A HOOK (the only recognition-independent lever): the AASC sweep and its +# self-incrimination rule are ALREADY normative MUST in the ac-evaluator lens +# ("on a `triggered-on=` AC, an `## Accept-set sweep` line with `ran=n`, or with +# `ran=y astral=n`, is a NON-CONFORMANT shallow sweep"). Yet because that rule +# is honoured only by the model RECOGNISING it, live dogfoods leaked it +# run-to-run — a triggered boundary stood the sweep down on one re-run of a +# subject it had swept on a prior run. This hook reads the EMITTED line and +# applies the SAME rule deterministically, with zero model recall, closing the +# run-to-run variance that prose alone could not. +# +# WHAT IT CANNOT DO (the bound, R1): it verifies the STRUCTURE of the emitted +# line (a triggered boundary not run; a shallow run that skipped the astral +# complement; a sliced corpus; an authoritative divergence that did not drive +# the verdict to FAIL). It CANNOT verify that a `ran=y astral=y corpus-size=750` +# line is TRUTHFUL — a model could emit those fields without executing the +# sweep. Catching structural self-incrimination, not fabrication, is the ceiling. +# +# Predicates (per `boundary=` line in the section): +# P1 stand-down (all axes): triggered=y ran=n -> NON-CONFORMANT +# P2 shallow (A,U axes): triggered=y ran=y astral=n -> NON-CONFORMANT +# P3 sliced (A,U axes): triggered=y ran=y corpus-size < FLOOR -> NON-CONFORMANT +# P4 gating (all axes): authoritative=y divergences>0 while Status not FAIL/FAIL-CRITICAL -> NON-CONFORMANT +# The `caveat=no-runnable-artifact` escape (a compiled language / no exec +# harness: triggered but the sweep could not be executed) exempts P1/P2/P3 for +# that line — a legit fail-OPEN degradation, NOT a violation. P4 still applies. +# P2/P3 are scoped to the alphabet (A) and unicode-transform (U) axes, where a +# large astral-inclusive complement corpus is the mandated breadth. The keyed (K) +# and canonical-writer (W) axes legitimately enumerate a small reflection-derived +# corpus (a structure's reserved/accessor/private-slot names are a handful of +# ASCII identifiers, never hundreds, never astral), so flooring them would +# false-trip. P1 and P4 are axis-independent. +# +# Kill switch SW_ACCEPT_SET_CONFORMANCE_MODE: +# metric-only (DEFAULT) -> observe: log `[ACCEPT-SET-VERIFY] metric-only: would block ...`, ALLOW. +# on -> enforce: emit a PostToolUse `decision: block` with the reason. +# off -> explicit opt-out: silent skip. +# unknown -> collapses to metric-only (a typo neither enforces nor silently disables). +# +# Corpus floor SW_AASC_CORPUS_FLOOR (default 256) — the P3 minimum corpus size +# for an A/U-axis triggered+run sweep; env-tunable per host/subject. +# +# Fail-OPEN iron rule: this hook MUST NEVER break the host Write/Edit. jq +# missing, an unreadable report, a non-eval path, a skeleton (IN_PROGRESS) write, +# the `n/a` fallback, or any internal error is a silent `exit 0`. The exit code +# is ALWAYS 0; the only non-allow influence is the `on`-mode `decision: block` +# JSON, which surfaces the reason to the model (the report write itself already +# completed). + +set -euo pipefail + +# jq is required to parse the PostToolUse payload. Silent skip if missing — +# Write/Edit must never be blocked by this hook (fail-OPEN). +command -v jq >/dev/null 2>&1 || exit 0 + +INPUT=$(cat 2>/dev/null || echo '{}') + +# Gate 1: path match — only AASC eval-round reports. The single glob +# `*eval-round-*.md` covers eval-round-{n}.md, the -part-{i} / -v{i} partition +# and multi-verifier variants, and the docs/eval-round/{topic}-eval-round-{n}.md +# fallback (case globs are not path-aware, so the leading `*` spans directories). +TOOL_FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // ""' 2>/dev/null || echo "") +case "$TOOL_FILE_PATH" in + *eval-round-*.md) ;; + *) exit 0 ;; +esac + +# Gate 2: read the just-written file from disk (NOT the tool payload — the +# terminal rewrite may arrive as a Write of the full body or as Edits, and the +# on-disk state after PostToolUse is the authoritative final content). +[ -f "$TOOL_FILE_PATH" ] || exit 0 + +# Gate 2a: skeleton false-trip guard. The ac-evaluator does TWO writes — a +# `## Status: IN_PROGRESS` skeleton (no sweep section) FIRST, then a terminal +# rewrite. The first `## Status:` line is authoritative (agents/ac-evaluator.md). +# An IN_PROGRESS file is work-in-flight: pass. +FIRST_STATUS=$(grep -m1 -E '^## Status:' "$TOOL_FILE_PATH" 2>/dev/null | sed -E 's/^## Status:[[:space:]]*//' || true) +case "$FIRST_STATUS" in + IN_PROGRESS*) exit 0 ;; +esac + +# Gate 2b: no `## Accept-set sweep` section -> nothing persisted to verify +# (sweep not in scope, or a pre-v8.5.0 / degraded report). Fail-OPEN. +grep -qE '^## Accept-set sweep[[:space:]]*$' "$TOOL_FILE_PATH" 2>/dev/null || exit 0 + +# Gate 3: kill switch. Unknown collapses to metric-only. +MODE_RAW="${SW_ACCEPT_SET_CONFORMANCE_MODE:-metric-only}" +case "$MODE_RAW" in + on|metric-only|off) MODE="$MODE_RAW" ;; + *) MODE="metric-only" ;; +esac +[ "$MODE" = "off" ] && exit 0 + +CORPUS_FLOOR="${SW_AASC_CORPUS_FLOOR:-256}" +case "$CORPUS_FLOOR" in + ''|*[!0-9]*) CORPUS_FLOOR=256 ;; +esac + +# Extract the `## Accept-set sweep` section body (heading exclusive, up to the +# next `## ` heading or EOF). +SECTION=$(awk ' + /^## Accept-set sweep[[:space:]]*$/ { f=1; next } + /^## / { f=0 } + f +' "$TOOL_FILE_PATH" 2>/dev/null || true) + +# `n/a` fallback (no external-input boundary in scope) -> conformant by contract. +case "$SECTION" in + *"n/a (no external-input boundary in scope)"*) exit 0 ;; +esac + +# Is the terminal verdict a FAIL? FAIL and FAIL-CRITICAL both start FAIL; PASS +# and PASS-WITH-CAVEATS start PASS. Used by P4. +case "$FIRST_STATUS" in + FAIL*) STATUS_IS_FAIL=1 ;; + *) STATUS_IS_FAIL=0 ;; +esac + +# field_of -> the token value (empty if absent). +field_of() { + local v + v=$(printf '%s\n' "$1" | grep -oE "$2=[^ ]+" | head -1) || true + printf '%s' "${v#*=}" +} + +VIOLATIONS="" +while IFS= read -r LINE; do + case "$LINE" in + boundary=*) ;; + *) continue ;; + esac + B=$(field_of "$LINE" boundary) + TRIG=$(field_of "$LINE" triggered) + RAN=$(field_of "$LINE" ran) + ASTRAL=$(field_of "$LINE" astral) + CORPUS=$(field_of "$LINE" corpus-size) + DIV=$(field_of "$LINE" divergences) + AUTH=$(field_of "$LINE" authoritative) + CAVEAT=$(field_of "$LINE" caveat) + + REASON="" + # The no-runnable-artifact caveat is the documented fail-OPEN escape (a + # compiled language / no exec harness: the boundary was triggered but the + # sweep could not be executed). It exempts the execution + depth predicates + # P1/P2/P3 (ran=n / astral=n / corpus=0 are then justified, not violations); + # the gating-consistency predicate P4 still applies. + if [ "$CAVEAT" != "no-runnable-artifact" ]; then + # P1 stand-down (all axes): a triggered boundary that was not run. + if [ "$TRIG" = "y" ] && [ "$RAN" = "n" ]; then + REASON="P1-stand-down" + elif [ "$TRIG" = "y" ] && [ "$RAN" = "y" ]; then + # P2 shallow astral (A,U axes): astral complement skipped. + if { [ "$B" = "A" ] || [ "$B" = "U" ]; } && [ "$ASTRAL" = "n" ]; then + REASON="P2-shallow-astral" + # P3 sliced corpus (A,U axes): corpus below the floor. + elif { [ "$B" = "A" ] || [ "$B" = "U" ]; } \ + && printf '%s' "$CORPUS" | grep -qE '^[0-9]+$' \ + && [ "$CORPUS" -lt "$CORPUS_FLOOR" ]; then + REASON="P3-sliced-corpus(<$CORPUS_FLOOR)" + fi + fi + fi + # P4 gating-consistency (all axes): an authoritative boundary with divergences + # must drive the verdict to FAIL. + if [ -z "$REASON" ] && [ "$AUTH" = "y" ] \ + && printf '%s' "$DIV" | grep -qE '^[0-9]+$' \ + && [ "$DIV" -gt 0 ] && [ "$STATUS_IS_FAIL" = "0" ]; then + REASON="P4-gating-inconsistency" + fi + + [ -n "$REASON" ] || continue + VIOLATIONS="${VIOLATIONS}boundary=${B} triggered=${TRIG} ran=${RAN} astral=${ASTRAL} corpus-size=${CORPUS} reason=${REASON}"$'\n' +done <&2 + done <&2 +done <= the floor; an authoritative divergence must drive the verdict to FAIL. Re-run the EXECUTED accept-set sweep per agents/ac-evaluator.md and rewrite the report." \ + '{decision:"block", reason:$r}' +exit 0 diff --git a/hooks/hooks.json b/hooks/hooks.json index bf57c66..bead92e 100644 --- a/hooks/hooks.json +++ b/hooks/hooks.json @@ -61,6 +61,14 @@ { "matcher": "Edit", "hooks": [{ "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/post-ship-state-auto-compact.sh" }] + }, + { + "matcher": "Write", + "hooks": [{ "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/accept-set-verify.sh" }] + }, + { + "matcher": "Edit", + "hooks": [{ "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/accept-set-verify.sh" }] } ], "Stop": [ diff --git a/skills/brief/references/policy-template.md b/skills/brief/references/policy-template.md index 0fbda1e..d3772b6 100644 --- a/skills/brief/references/policy-template.md +++ b/skills/brief/references/policy-template.md @@ -39,4 +39,5 @@ constraints: eval_panel: auto # auto (default, failure-class eval panel M8/v8.4.0+) grades through a fixed failure-class lens set (L-CORRECTNESS + >=1 more at standard, 5-lens fan-out at exhaustive) instead of a single all-purpose pass and emits a per-ticket [EVAL-PANEL] lenses= mode= observability line after every AC is verdicted; auto activates for a ticket touching >=2 source units or carrying >=1 behavioral AC, on forces it, off disables it (drops the panel + the [EVAL-PANEL] line; byte-for-byte revert to the pre-panel single-pass behaviour). The per-AC [ORACLE-AUDIT] line is unconditional and NOT gated by this switch. See skills/create-ticket/references/autopilot-policy-reference.md constraints.eval_panel and skills/impl/SKILL.md Step 15 selfdoc_verification: auto # auto (default, EC-SELFDOC doc-truthfulness v8.4.0+) activates the EC-SELFDOC evidence channel + the doc-verifier agent: a behavioral AC may compare the unit's OWN declared contract (docstring/declared invariant/type annotation/--help line/README worked-example/advertised size-or-range boundary) against observed runtime behaviour — RUN each advertised example and diff (byte-for-byte if deterministic, explicit tolerance otherwise), feed each advertised boundary a FORBIDDEN value (must reject) + an ALLOWED value (must accept), under the .simple-workflow/scratch/ exec carve-out, fail-open with a Caveat where the build can't be exercised; this is the standing channel for Gate 9 rows R3/R4. off stands the channel + doc-verifier down (other behavioral channels unaffected; Gate 9 R3/R4 fall back to pre-v8.4.0 prose) — byte-for-byte revert. Independent of oracle_verification/independent_evidence/failure_class_coverage/eval_panel. See skills/impl/references/evidence-channels.md, skills/create-ticket/references/ac-quality-criteria.md Gate 9 R3/R4, and skills/create-ticket/references/autopilot-policy-reference.md constraints.selfdoc_verification refute_merge: auto # auto (default, refute-then-synthesize merge v8.4.0+) makes the exhaustive 3-verifier merge refute-driven: a non-critical FAIL raised by any one valid verifier survives as FAIL unless every other valid verifier refutes it (independently rendered PASS/PASS-WITH-CAVEATS on the same AC; silence is not refutation), so a lone reproducing non-critical FAIL is no longer demoted to PASS; off reverts byte-for-byte to the prior majority-merge (a non-critical FAIL needs >=2 verifiers; lone FAIL demoted to PASS). CRITICAL-not-voted-away, the valid<2 quorum, and the severity ladder are mode-invariant; the merge runs only in the exhaustive multi-verifier branch. See skills/create-ticket/references/autopilot-policy-reference.md constraints.refute_merge and skills/impl/SKILL.md Step 15 + accept_set_conformance: auto # auto (default, Advertised-Accept-Set Conformance v8.5.0+) makes the ac-evaluator EXECUTE a generative grammar-complement sweep (black-box vs an independent spec oracle, MR-FINITE/MR-ALPHABET/MR-CANONICAL/MR-KEYFAITH) for any AC whose boundary advertises strict/canonical/lossless/limit or shares an input class with a sibling, and the hooks/accept-set-verify.sh PostToolUse gate deterministically verifies the persisted ## Accept-set sweep line (a triggered boundary not run / a shallow astral sweep / a sliced corpus / an authoritative divergence not driven to FAIL is flagged); off skips the EXECUTED sweep, reverting byte-for-byte to read-only strictness reasoning + a one-line Caveat. Independent of verification_depth/oracle_verification/eval_panel. See skills/create-ticket/references/autopilot-policy-reference.md constraints.accept_set_conformance and skills/impl/SKILL.md Step 15 ``` diff --git a/skills/create-ticket/references/autopilot-policy-reference.md b/skills/create-ticket/references/autopilot-policy-reference.md index cd3b29d..ea38a6c 100644 --- a/skills/create-ticket/references/autopilot-policy-reference.md +++ b/skills/create-ticket/references/autopilot-policy-reference.md @@ -272,6 +272,47 @@ switch for the refute-then-synthesize merge; it is independent of `constraints.eval_panel`, `constraints.independent_evidence`, `constraints.oracle_verification`, and `constraints.verification_depth`. +## `constraints.accept_set_conformance` + +**Consumed by**: `/impl` (Step 15 `accept_set_conformance` resolution — the per-AC +deterministic trigger + the EXECUTED accept-set sweep handoff to `ac-evaluator` / +`ac-evaluator-hi`), the `ac-evaluator` `## Failure-class panel` L-ROBUSTNESS lens +(which EXECUTES the sweep for the `triggered-on=` ACs against an independent +hand-coded spec oracle), and the `hooks/accept-set-verify.sh` PostToolUse gate +(which verifies the persisted `## Accept-set sweep` line post-hoc). + +**Accepted values**: `auto`, `off`. + +**Default** (field absent OR policy file absent OR unknown value): `auto` +(fail-safe to active). + +**Effect**: when `auto`, **Advertised-Accept-Set Conformance** (v8.5.0+) is +active. For any AC whose boundary advertises **strict / canonical / lossless / +limit** (word-existence in the AC, its Implementation Notes, the docstring, or +`--help`) OR shares an input class with a `shared_input_boundary` sibling (a +keyed structure built from untrusted input triggers the K axis even with no +lexical word), the orchestrator marks the AC `triggered-on=` and the evaluator +MUST NOT merely reason about the accept set — it EXECUTES a generative +grammar-complement sweep in `.simple-workflow/scratch/` and diffs the unit's +accept-set against an independent hand-coded spec oracle (the four metamorphic +relations MR-FINITE / MR-ALPHABET / MR-CANONICAL / MR-KEYFAITH; see +[`../../impl/references/accept-set-conformance-harness.md`](../../impl/references/accept-set-conformance-harness.md)). +A divergence is FAILed only under the two-tier oracle-authoritative gate (the +oracle is authoritatively narrower than the unit's accept-set), else recorded as +ADVISORY PASS-WITH-CAVEATS (the EC-SELFDOC fail-open posture). The evaluator +persists one `## Accept-set sweep` line per inspected boundary, and +`hooks/accept-set-verify.sh` deterministically verifies that line — a triggered +boundary not run, an alphabet/unicode (A/U-axis) sweep that skipped the astral +complement or used a sliced corpus, or an authoritative divergence not driven to +FAIL is flagged (metric-only by default; see CLAUDE.md +`SW_ACCEPT_SET_CONFORMANCE_MODE`). When `off`, the EXECUTED sweep and the hook +gate stand down: the evaluator verifies the boundary by the prior read-only +strictness reasoning and records a one-line Caveat — the byte-for-byte revert. +This is the per-brief kill switch for the Advertised-Accept-Set Conformance +feature line; it is independent of `constraints.verification_depth`, +`constraints.oracle_verification`, `constraints.eval_panel`, and +`constraints.independent_evidence`. + ## `constraints.selfdoc_verification` **Consumed by**: the EC-SELFDOC evidence channel in diff --git a/skills/impl/references/ac-evaluator-orchestration.md b/skills/impl/references/ac-evaluator-orchestration.md index 230d78a..752d5fc 100644 --- a/skills/impl/references/ac-evaluator-orchestration.md +++ b/skills/impl/references/ac-evaluator-orchestration.md @@ -314,6 +314,31 @@ lenses)`) UNLESS the panel resolved `off`. `eval_panel` is independent of `verification_depth` (which scales tier/depth), `oracle_verification` (the EC-ORACLE sub-case), and `independent_evidence` (the per-AC evidence floor). +**Kill switch `constraints.accept_set_conformance: auto|off`** (absent file / +field / unknown → `auto`, active). Resolved by the orchestrator at `/impl` +Step 15 (the per-AC deterministic trigger) and enforced post-hoc by +`hooks/accept-set-verify.sh`: + +- `auto` — Advertised-Accept-Set Conformance is in force: the orchestrator + computes `triggered-on=` per AC (a boundary lexically advertising **strict / + canonical / lossless / limit**, OR a `shared_input_boundary` sibling — a keyed + structure built from untrusted input triggers the K axis even with no lexical + word), inlines `Accept-set conformance: auto triggered-on={ids}` into the + evaluator spawn, and the evaluator EXECUTES the generative grammar-complement + sweep (black-box, vs an independent hand-coded spec oracle) for exactly those + ACs, persisting one `## Accept-set sweep` line per inspected boundary. +- `off` — DISABLE the EXECUTED sweep: the evaluator verifies the boundary by the + prior read-only strictness reasoning and records a one-line Caveat, and the + `hooks/accept-set-verify.sh` gate has no sweep line to verify — reverting + byte-for-byte to the pre-v8.5.0 read-only path. + +The switch is independent of `verification_depth`, `oracle_verification`, +`eval_panel`, and `independent_evidence`. The post-hoc gate +`hooks/accept-set-verify.sh` ships `metric-only` (observe, never block) and is +promoted to `on` after a clean dogfood (CLAUDE.md +`SW_ACCEPT_SET_CONFORMANCE_MODE`); the EXECUTED sweep itself runs whenever this +switch is not `off`. + ## Independent-evidence channels (all evaluator modes) Independent of the verifier count, every `ac-evaluator` invocation — single, diff --git a/tests/test-accept-set-verify.sh b/tests/test-accept-set-verify.sh new file mode 100755 index 0000000..90b8715 --- /dev/null +++ b/tests/test-accept-set-verify.sh @@ -0,0 +1,162 @@ +#!/usr/bin/env bash +# Behaviour tests for hooks/accept-set-verify.sh — the deterministic +# Advertised-Accept-Set Conformance (AASC) post-hoc gate over the persisted +# `## Accept-set sweep` section of an eval-round-{n}.md report. +# +# Mirrors the proof-by-construction matrix: every conformance predicate +# (P1 stand-down / P2 shallow-astral / P3 sliced-corpus / P4 gating-consistency) +# is exercised against fixture reports, with the no-runnable-artifact escape, +# the A/U-axis floor scoping (K/W small reflection corpora must NOT false-trip), +# the dogfood50 clean shape (NO false positive), the skeleton / n/a / non-eval +# fail-OPEN gates, the kill-switch tri-state, and the jq-absent fail-OPEN path. +set -uo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/test-helper.sh" + +HOOK="$HOOK_DIR/accept-set-verify.sh" +FIXDIR=$(mktemp -d) + +echo "=== accept-set-verify.sh Tests ===" +echo "" + +mkfix() { printf '%s\n' "$2" > "$FIXDIR/$1"; } + +run_fix() { # run_fix + local json + json=$(jq -n --arg fp "$FIXDIR/$1" '{"tool_input":{"file_path":$fp}}') + run_hook "$HOOK" "$json" +} + +pass_local() { echo -e " ${GREEN}PASS${NC} $1"; TESTS_PASSED=$((TESTS_PASSED + 1)); TESTS_TOTAL=$((TESTS_TOTAL + 1)); } +fail_local() { + echo -e " ${RED}FAIL${NC} $1" + echo -e " RC=$LAST_EXIT_CODE OUT=[$LAST_STDOUT] ERR=[$LAST_STDERR]" + TESTS_FAILED=$((TESTS_FAILED + 1)); TESTS_TOTAL=$((TESTS_TOTAL + 1)) +} + +expect_block() { if [ "$LAST_EXIT_CODE" -eq 0 ] && echo "$LAST_STDOUT" | grep -q '"decision": "block"'; then pass_local "$1"; else fail_local "$1"; fi; } +expect_noblock() { if [ "$LAST_EXIT_CODE" -eq 0 ] && ! echo "$LAST_STDOUT" | grep -q '"decision"'; then pass_local "$1"; else fail_local "$1"; fi; } +expect_metric() { if [ "$LAST_EXIT_CODE" -eq 0 ] && echo "$LAST_STDERR" | grep -qF '[ACCEPT-SET-VERIFY] metric-only: would block'; then pass_local "$1"; else fail_local "$1"; fi; } +expect_silent() { if [ "$LAST_EXIT_CODE" -eq 0 ] && [ -z "$LAST_STDOUT" ] && [ -z "$LAST_STDERR" ]; then pass_local "$1"; else fail_local "$1"; fi; } + +# ---- Fixtures ------------------------------------------------------------- +mkfix eval-round-F1.md "## Status: FAIL + +## Accept-set sweep +boundary=K triggered=y ran=n astral=n corpus-size=0 divergences=0 authoritative=y caveat=none" + +mkfix eval-round-F2.md "## Status: PASS + +## Accept-set sweep +boundary=A triggered=y ran=y astral=n corpus-size=300 divergences=0 authoritative=n caveat=none" + +mkfix eval-round-F3.md "## Status: PASS + +## Accept-set sweep +boundary=A triggered=y ran=y astral=n corpus-size=0 divergences=0 authoritative=n caveat=no-runnable-artifact" + +mkfix eval-round-F3b.md "## Status: PASS-WITH-CAVEATS + +## Accept-set sweep +boundary=A triggered=y ran=n astral=n corpus-size=0 divergences=0 authoritative=n caveat=no-runnable-artifact" + +mkfix eval-round-F4.md "## Status: PASS + +## Accept-set sweep +boundary=U triggered=y ran=y astral=y corpus-size=12 divergences=0 authoritative=n caveat=none" + +mkfix eval-round-F5.md "## Status: PASS + +## Accept-set sweep +boundary=A triggered=y ran=y astral=y corpus-size=750 divergences=2 authoritative=y caveat=none" + +mkfix eval-round-F6.md "## Status: PASS + +## Accept-set sweep +boundary=A triggered=y ran=y astral=y corpus-size=750 divergences=0 authoritative=y caveat=none" + +mkfix eval-round-F7.md "## Status: PASS-WITH-CAVEATS + +## Accept-set sweep +boundary=W triggered=n ran=n astral=n corpus-size=0 divergences=0 authoritative=n caveat=none +boundary=K triggered=y ran=y astral=n corpus-size=37 divergences=0 authoritative=n caveat=none +boundary=A triggered=y ran=y astral=y corpus-size=512 divergences=3 authoritative=n caveat=none" + +mkfix eval-round-F7b.md "## Status: PASS + +## Accept-set sweep +n/a (no external-input boundary in scope)" + +mkfix eval-round-F9.md "## Status: IN_PROGRESS + +- [ ] AC-1: do the thing" + +mkfix eval-round-F10.md "## Status: PASS + +- [x] AC-1: done" + +mkfix some-other-file.md "## Status: PASS + +## Accept-set sweep +boundary=A triggered=y ran=n astral=n corpus-size=0 divergences=0 authoritative=y caveat=none" + +# ---- MODE=on (enforce) ---------------------------------------------------- +echo "--- MODE=on (enforce: decision:block on violation) ---" +export SW_ACCEPT_SET_CONFORMANCE_MODE=on SW_AASC_CORPUS_FLOOR=256 +run_fix eval-round-F1.md; expect_block "F1 P1 stand-down (triggered=y ran=n) -> block" +run_fix eval-round-F2.md; expect_block "F2 P2 shallow-astral (A axis) -> block" +run_fix eval-round-F3.md; expect_noblock "F3 no-runnable-artifact escape (ran=y) -> no block" +run_fix eval-round-F3b.md; expect_noblock "F3b no-runnable-artifact (ran=n, legit degradation) -> no block" +run_fix eval-round-F4.md; expect_block "F4 P3 sliced-corpus (U axis, 12<256) -> block" +export SW_AASC_CORPUS_FLOOR=8 +run_fix eval-round-F4.md; expect_noblock "F4 floor=8 -> no block (SW_AASC_CORPUS_FLOOR tunable)" +export SW_AASC_CORPUS_FLOOR=256 +run_fix eval-round-F5.md; expect_block "F5 P4 gating-inconsistency (auth=y div=2 PASS) -> block" +run_fix eval-round-F6.md; expect_noblock "F6 dogfood50 clean shape -> NO false trip" +run_fix eval-round-F7.md; expect_noblock "F7 K small-corpus+astral=n & auth=n divergences -> no trip" +run_fix eval-round-F7b.md; expect_noblock "F7b n/a fallback -> no block" +run_fix eval-round-F9.md; expect_noblock "F9 skeleton IN_PROGRESS (Gate 2a) -> no block" +run_fix eval-round-F10.md; expect_noblock "F10 terminal, no sweep section (Gate 2b) -> no block" +run_fix some-other-file.md; expect_noblock "F8 non-eval path (Gate 1) -> no block" + +# ---- MODE=metric-only (default; observe only) ----------------------------- +echo "--- MODE=metric-only (default: observe, never block) ---" +export SW_ACCEPT_SET_CONFORMANCE_MODE=metric-only SW_AASC_CORPUS_FLOOR=256 +run_fix eval-round-F1.md; expect_metric "F1 -> metric-only would-block stderr" +run_fix eval-round-F2.md; expect_metric "F2 -> metric-only would-block stderr" +run_fix eval-round-F5.md; expect_metric "F5 -> metric-only would-block stderr" +run_fix eval-round-F6.md; expect_silent "F6 clean -> silent (no metric line)" +run_fix eval-round-F7.md; expect_silent "F7 -> silent (no false trip)" + +# ---- MODE=off (explicit opt-out) ------------------------------------------ +echo "--- MODE=off (explicit opt-out: silent) ---" +export SW_ACCEPT_SET_CONFORMANCE_MODE=off SW_AASC_CORPUS_FLOOR=256 +run_fix eval-round-F1.md; expect_silent "F1 off -> silent exit 0" +run_fix eval-round-F5.md; expect_silent "F5 off -> silent exit 0" + +# ---- MODE=unknown (collapses to metric-only) ------------------------------ +echo "--- MODE=typo (unknown collapses to metric-only) ---" +export SW_ACCEPT_SET_CONFORMANCE_MODE=enforce SW_AASC_CORPUS_FLOOR=256 +run_fix eval-round-F1.md; expect_metric "F1 unknown-mode -> metric-only (not enforce, not off)" +unset SW_ACCEPT_SET_CONFORMANCE_MODE SW_AASC_CORPUS_FLOOR + +# ---- jq-absent (fail-OPEN) ------------------------------------------------ +echo "--- jq-absent (fail-OPEN exit 0) ---" +RBIN=$(mktemp -d) +for c in bash cat grep sed awk head tr basename printf; do + p=$(command -v "$c" 2>/dev/null) && ln -s "$p" "$RBIN/$c" 2>/dev/null +done +jq_json=$(printf '{"tool_input":{"file_path":"%s"}}' "$FIXDIR/eval-round-F1.md") +if printf '%s' "$jq_json" | PATH="$RBIN" SW_ACCEPT_SET_CONFORMANCE_MODE=on bash "$HOOK" >/dev/null 2>&1; then + jqrc=0 +else + jqrc=$? +fi +LAST_EXIT_CODE="$jqrc"; LAST_STDOUT=""; LAST_STDERR="" +if [ "$jqrc" -eq 0 ]; then pass_local "jq-absent -> fail-OPEN exit 0"; else fail_local "jq-absent -> fail-OPEN exit 0"; fi +rm -rf "$RBIN" + +# ---- cleanup + summary ---------------------------------------------------- +rm -rf "$FIXDIR" +print_summary diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index 2fb5c85..8912690 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -10358,6 +10358,32 @@ aasc12_result="false" if [ "$aasc12_doc" -ge 1 ] && [ "$aasc12_acev" -ge 1 ] && [ "$aasc12_hi" -ge 1 ] && [ "$aasc12_doc_full" -ge 1 ] && [ "$aasc12_acev_full" -ge 1 ] && [ "$aasc12_hi_full" -ge 1 ]; then aasc12_result="true"; fi assert_true "CT-AASC-12 (reflection corpus incl private/internal slots + FULL set, doc+both twins): private-slot doc ($aasc12_doc) acev ($aasc12_acev) hi ($aasc12_hi); FULL-set doc ($aasc12_doc_full) acev ($aasc12_acev_full) hi ($aasc12_hi_full)" "$aasc12_result" +# CT-AASC-13 (AASC verification hook registered: deterministic post-hoc conformance gate; v8.5.0+). +# LOAD-BEARING per charter section H: the AASC sweep + its self-incrimination rule are ALREADY normative MUST in the +# ac-evaluator lens ("an `## Accept-set sweep` line with `ran=n`, or with `ran=y astral=n`, is a NON-CONFORMANT shallow +# sweep"), yet live dogfoods leaked them run-to-run because the rule is honoured only by model RECOGNITION. +# hooks/accept-set-verify.sh reads the EMITTED `## Accept-set sweep` line from the persisted eval-round-{n}.md and applies +# the SAME rule deterministically (P1 stand-down / P2 shallow-astral / P3 sliced-corpus / P4 gating), with zero model +# recall — the only recognition-independent lever. This pins the hook wired as >=2 PostToolUse entries (Write + Edit). +# RED-first: HEAD=0 (hook absent / unwired). Behaviour is covered by tests/test-accept-set-verify.sh (not a grep CT). +aasc13_wired=$(grep -cF 'hooks/accept-set-verify.sh' "$REPO_DIR/hooks/hooks.json" || true) +aasc13_result="false" +if [ "$aasc13_wired" -ge 2 ]; then aasc13_result="true"; fi +assert_true "CT-AASC-13 (AASC verification hook registered, Write+Edit PostToolUse): hooks.json registration count ($aasc13_wired>=2)" "$aasc13_result" + +# CT-AASC-14 (accept_set_conformance kill switch documented across the 3 spawner surfaces; v8.5.0+). +# The ac-evaluator already honours an `Accept-set conformance: off` short-circuit and /impl Step 15 already reads +# `constraints.accept_set_conformance` (absent->auto), but the per-brief policy field was undocumented on every spawner +# surface, so operators could not set it — a half-wired L1/L2/L3 gap. This closes it symmetrically (CLAUDE.md ## Plans +# enumerate-every-spawner rule), mirroring CT-EV-REFUTE-2. RED-first: HEAD=0 on all three tokens. DECONTAM-clean: the +# field name is an abstract property, no product/key literal. +aasc14_pt=$(grep -ciF 'accept_set_conformance: auto' "$REPO_DIR/skills/brief/references/policy-template.md" || true) +aasc14_apr=$(grep -ciF 'constraints.accept_set_conformance' "$REPO_DIR/skills/create-ticket/references/autopilot-policy-reference.md" || true) +aasc14_orch=$(grep -ciF 'constraints.accept_set_conformance: auto|off' "$REPO_DIR/skills/impl/references/ac-evaluator-orchestration.md" || true) +aasc14_result="false" +if [ "$aasc14_pt" -ge 1 ] && [ "$aasc14_apr" -ge 1 ] && [ "$aasc14_orch" -ge 1 ]; then aasc14_result="true"; fi +assert_true "CT-AASC-14 (accept_set_conformance kill switch documented): policy-template ($aasc14_pt>=1) + policy-reference ($aasc14_apr>=1) + orchestration block ($aasc14_orch>=1)" "$aasc14_result" + echo "" From 999faa38bdf95f397979834b08d9d4fc4bf45387 Mon Sep 17 00:00:00 2001 From: aimsise Date: Fri, 19 Jun 2026 00:31:48 +0900 Subject: [PATCH 12/15] fix(eval): AASC hook -- demote P3 corpus floor to advisory + case-insensitive header (dogfood51 confirmation findings) The dogfood51 confirmation run (subject lossless-record, 3 tickets; ran the committed fdbbf74 -- version confound ruled out: the generated autopilot-policy.yaml carries the v8.5.0+ accept_set_conformance field) VALIDATED the AASC determinism hook's core: the full chain fired end-to-end across all 3 tickets, the K/(b) boundary self-elicited a reflection-derived corpus (dir(Record): 38/35/12 names incl __proto__/constructor/_data) with NO dogfood49 stand-down regression, the sweep EXECUTED for real (003: 440 inputs, 390 astral found, 0 divergences vs an independent oracle -- the R1 fabrication bound intact), and the product did not leak (95/95 + independent adversarial probes). But an offline re-run of the committed hook against the 6 real persisted reports showed the P3 corpus floor (256) would, in `on` mode, decision:block 2 of 4 sweep-bearing reports -- both triggered=y ran=y astral=y divergences=0 CONFORMANT sweeps (002-r1 A=5, itself a PASS report; 003-r2 A=105/U=105) -- a false trip on a wide-spec subject's legitimately-thin sweep. Two format-drift cases also blunted the hook (a capital-S `## Accept-set Sweep` header skipped a whole report; a descriptive corpus-size dodged the numeric P3 guard). Per charter section H (do not ship a heuristic blocker that false-trips), the fix is in the HOOK (recognition-independent), not in lens prose: - hooks/accept-set-verify.sh: DEMOTE P3 (corpus-size < floor) from BLOCKING to ADVISORY -- it now emits `[ACCEPT-SET-VERIFY] advisory: ...` (a note, never a block) in both modes. corpus-size is a weak depth proxy (a few astral probes can be deeper than hundreds of ASCII ones); astral (P2) is the real A/U depth gate. P1 (stand-down) / P2 (astral) / P4 (gating) remain the BLOCKING set. Plus: match the `## Accept-set sweep` header case-insensitively (a mis-cased header no longer skips the whole report -- it was blunting P1/P2/P4 too); and parse the leading integer of a descriptive corpus-size so an annotation cannot dodge the advisory. - CLAUDE.md + autopilot-policy-reference.md: document P3 as advisory + the case-insensitive header + the leading-int parse. - tests/test-accept-set-verify.sh: F4 now expects advisory (not block); plus Fcap (capital-S header + P1 -> block), Fthin (the 002-r1 thin-conformant PASS shape -> advisory, NO block), Fsuffix (descriptive corpus-size -> leading-int parsed -> advisory). 26/26. Authoritative re-test: the updated hook against all 6 REAL dogfood51 reports in `on` mode -> 0 blocks (3 advisory, 3 clean), exit 0 everywhere -- the promotion gate (no false trip on a conformant report) is now CLEARED. A genuine P1/P2/P4 violation still blocks (Fcap: capital-S header + triggered=y ran=n -> block). Tests: test-skill-contracts 852/852, test-path-consistency 144/144, test-accept-set-verify 26/26, ShellCheck --severity=warning clean, CT-DECONTAM-1 0 hits, ac-evaluator twins byte-identical (CT-EV-MODEL-1; twins untouched). Honest scope: this validates no-false-positive on real artifacts; the on-mode BLOCK path is still proven only by construction + the offline re-run, never fired live (every dogfood51 sweep self-reported divergences=0). Promote SW_ACCEPT_SET_CONFORMANCE_MODE=on only after a deliberately-leaky subject exercises the live BLOCK path. Generation-side depth variance (5 vs 750 keys on the same boundary in one run) is SURFACED by the advisory, not fixed here -- the hook is the backstop, not the primary lever. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 4 +- hooks/accept-set-verify.sh | 96 ++++++++++++------- .../references/autopilot-policy-reference.md | 7 +- tests/test-accept-set-verify.sh | 33 ++++++- 4 files changed, 100 insertions(+), 40 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 913697d..eda09e1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,8 +36,8 @@ This rule was distilled from a v6.7.0 dogfood incident in which a verify hook ne - `SW_SAFETY_JQ_MISSING_MODE` — default `metric-only`. Controls the jq-missing preflight at the top of the three safety hooks (`hooks/pre-bash-safety.sh`, `hooks/pre-write-safety.sh`, `hooks/pre-edit-safety.sh`). `jq` is a documented hard dependency; when it is absent these guards cannot parse the tool payload and previously died with a silent `exit 127` (which Claude Code treats as a non-blocking error — a fail-OPEN). Values: `on` (fail **closed** — `exit 2` with an explicit `[SAFETY-JQ-MISSING] : jq not found …` message, blocking the tool call), `metric-only` (default — log `[SAFETY-JQ-MISSING] metric-only: … would fail closed …` to stderr and ALLOW the call with `exit 0`, so the shipped fail-open behaviour is unchanged but now observable), `off` (silently allow, `exit 0`, no message). Unknown values collapse to `metric-only` (the observe-only default — a typo never silently flips the guard to fail-closed). **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips on a jq-present host, set `=on` to enforce fail-closed. The `[SAFETY-JQ-MISSING]` exit-2 path is verified under a PATH-restricted (no-jq) test in `tests/test-pre-bash-safety.sh` / `tests/test-pre-write-safety.sh` / `tests/test-pre-edit-safety.sh` with the knob set to `on`. - `SW_BASH_STATE_GUARD_MODE` — default `metric-only`. Controls detection 3 of `hooks/pre-bash-contract-guard.sh` (the autopilot-context PreToolUse:Bash guard): a Bash-mediated state-file status mutation — `yq -i` / `sed -i` / shell-redirect on `autopilot-state.yaml` / `phase-state.yaml` that drives a `status:` (or `steps.`) to `skipped` / `completed` / `failed` / `in_progress`. The Write/Edit skip-transition guard (`hooks/pre-state-transition.sh`) is wired only to Write/Edit, so this closes the Bash bypass (ST-04). Values: `on` (emit `decision:block` with `unauthorized_state_mutate_bash` — deny the call), `metric-only` (default — log `[PRE-BASH-CONTRACT-GUARD] metric-only: would deny ...` to stderr and ALLOW), `off` (skip detection 3 entirely). Unknown values collapse to `metric-only`. Detections 1 (forbidden manual_bash_fallbacks rationale) and 2 (direct `git commit`) are NOT gated by this knob — the hook's existing NAC posture is preserved. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Read-only commands (`grep`/`cat`/`yq` without `-i`) and `runtime_metrics` appends (no status transition) are not matched. - `SW_STATE_FIELD_GUARD_MODE` — default `metric-only`. Gates the **HOOK_OWNED_FIELDS enforcement** in `hooks/pre-write-safety.sh` / `hooks/pre-edit-safety.sh`. The registry now ships with `.runtime_metrics` (an append-only telemetry list written exclusively by the six runtime-metrics writer hooks — Foundation 3 / ST-03), so a model Write/Edit that would clobber hook-appended `runtime_metrics` entries (a lost-update) is detectable. Values: `on` (emit `decision:block` whose reason NAMES the violated field — e.g. `.runtime_metrics` — and references `docs/state-schema.md`), `metric-only` (default — log `[STATE-FIELD-GUARD] metric-only: would block ...` to stderr and ALLOW, so populating the registry does NOT change the shipped allow-by-default behaviour), `off` (allow silently). Unknown values collapse to `metric-only`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Detection covers the inline `runtime_metrics: []` → `[…]` (and blank-out) form; a multi-line list mutation expressed without an inline value change is not detected (acceptable under the metric-only default). -- `SW_ACCEPT_SET_CONFORMANCE_MODE` — default `metric-only`. Controls `hooks/accept-set-verify.sh`, the PostToolUse(Write|Edit) gate that deterministically verifies the persisted `## Accept-set sweep` section of an `eval-round-{n}.md` report (the Advertised-Accept-Set Conformance observability line written by `agents/ac-evaluator.md`'s Persistence-First terminal rewrite). The hook reads the EMITTED line and applies the lens's OWN self-incrimination rule with zero model recall — flagging a triggered boundary not run (P1), an alphabet/unicode (A/U-axis) sweep that skipped the astral complement (P2) or used a corpus below `SW_AASC_CORPUS_FLOOR` (P3), or an authoritative divergence not driven to FAIL (P4). The keyed (K) / canonical-writer (W) axes are exempt from the astral/corpus floors (a reflection-derived key corpus is legitimately small), and `caveat=no-runnable-artifact` exempts P1/P2/P3 (a compiled-language fail-open degradation). Values: `on` (enforce — emit a PostToolUse `decision:block` whose reason names the violated predicate, surfacing it to the evaluator to re-run the sweep), `metric-only` (default — log `[ACCEPT-SET-VERIFY] metric-only: would block ...` to stderr and ALLOW, so the shipped behaviour is observe-only), `off` (explicit opt-out, silent). Unknown values collapse to `metric-only` (a typo neither enforces nor silently disables observation). The exit code is ALWAYS 0 (fail-OPEN — the hook can never break a Write/Edit; the only non-allow influence is the `on`-mode block JSON), and a missing `jq` is a silent `exit 0`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Verified by `tests/test-accept-set-verify.sh`. This is the runtime, recognition-independent half of the per-brief `constraints.accept_set_conformance` switch (which gates whether the EXECUTED sweep runs at all). -- `SW_AASC_CORPUS_FLOOR` — default `256`. The minimum corpus size for a P3 (sliced-corpus) flag in `hooks/accept-set-verify.sh`, applied ONLY to a `triggered=y ran=y` alphabet (A) or unicode-transform (U) boundary line — the axes whose mandated complement (the Unicode decimal-digit property across the BMP and astral planes) is naturally large. Lower it (e.g. `=8`) when a legitimately small advertised accept-set on an A/U boundary trips P3; raise it to demand a broader sweep. Honoured only when `SW_ACCEPT_SET_CONFORMANCE_MODE` is not `off`. +- `SW_ACCEPT_SET_CONFORMANCE_MODE` — default `metric-only`. Controls `hooks/accept-set-verify.sh`, the PostToolUse(Write|Edit) gate that deterministically verifies the persisted `## Accept-set sweep` section of an `eval-round-{n}.md` report (the Advertised-Accept-Set Conformance observability line written by `agents/ac-evaluator.md`'s Persistence-First terminal rewrite). The hook reads the EMITTED line and applies the lens's OWN self-incrimination rule with zero model recall — BLOCKING on a triggered boundary not run (P1), an alphabet/unicode (A/U-axis) sweep that skipped the astral complement (P2), or an authoritative divergence not driven to FAIL (P4); plus a non-blocking ADVISORY note when an A/U-axis corpus falls below `SW_AASC_CORPUS_FLOOR` (P3 — corpus-size is a weak depth proxy, so a thin corpus is surfaced, NEVER blocked; the dogfood51 confirmation run showed flooring it false-trips a legitimately-thin-but-conformant sweep, so P3 was demoted to advisory). The keyed (K) / canonical-writer (W) axes are exempt from the astral/corpus checks (a reflection-derived key corpus is legitimately small), `caveat=no-runnable-artifact` exempts P1/P2 and the P3 advisory (a compiled-language fail-open degradation), and the `## Accept-set sweep` header is matched case-insensitively (a mis-cased header cannot let a whole report skip the gate). Values: `on` (enforce — emit a PostToolUse `decision:block` whose reason names the violated predicate, surfacing it to the evaluator to re-run the sweep), `metric-only` (default — log `[ACCEPT-SET-VERIFY] metric-only: would block ...` to stderr and ALLOW, so the shipped behaviour is observe-only), `off` (explicit opt-out, silent). Unknown values collapse to `metric-only` (a typo neither enforces nor silently disables observation). The exit code is ALWAYS 0 (fail-OPEN — the hook can never break a Write/Edit; the only non-allow influence is the `on`-mode block JSON), and a missing `jq` is a silent `exit 0`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Verified by `tests/test-accept-set-verify.sh`. This is the runtime, recognition-independent half of the per-brief `constraints.accept_set_conformance` switch (which gates whether the EXECUTED sweep runs at all). +- `SW_AASC_CORPUS_FLOOR` — default `256`. The ADVISORY threshold for the P3 thin-corpus NOTE in `hooks/accept-set-verify.sh` (a thinner A/U corpus is surfaced to stderr as `[ACCEPT-SET-VERIFY] advisory: ...`, NEVER blocked), applied ONLY to a `triggered=y ran=y` alphabet (A) or unicode-transform (U) boundary line — the axes whose mandated complement (the Unicode decimal-digit property across the BMP and astral planes) is naturally large. A descriptive corpus-size (e.g. `5-canonical-forms`) is parsed by its leading integer so an annotation cannot dodge the note. Lower it (e.g. `=8`) to silence the note on a legitimately small advertised accept-set; raise it to surface more sweeps. Honoured only when `SW_ACCEPT_SET_CONFORMANCE_MODE` is not `off`. ## Language diff --git a/hooks/accept-set-verify.sh b/hooks/accept-set-verify.sh index f92cd3f..e082c89 100755 --- a/hooks/accept-set-verify.sh +++ b/hooks/accept-set-verify.sh @@ -26,19 +26,25 @@ # sweep. Catching structural self-incrimination, not fabrication, is the ceiling. # # Predicates (per `boundary=` line in the section): -# P1 stand-down (all axes): triggered=y ran=n -> NON-CONFORMANT -# P2 shallow (A,U axes): triggered=y ran=y astral=n -> NON-CONFORMANT -# P3 sliced (A,U axes): triggered=y ran=y corpus-size < FLOOR -> NON-CONFORMANT -# P4 gating (all axes): authoritative=y divergences>0 while Status not FAIL/FAIL-CRITICAL -> NON-CONFORMANT +# P1 stand-down (all axes): triggered=y ran=n -> BLOCK +# P2 shallow (A,U axes): triggered=y ran=y astral=n -> BLOCK +# P4 gating (all axes): authoritative=y divergences>0 while Status not FAIL/FAIL-CRITICAL -> BLOCK +# P3 thin-corpus (A,U axes): triggered=y ran=y corpus-size < FLOOR -> ADVISORY ONLY (never blocks) +# P3 is ADVISORY, not a gate (dogfood51): corpus-size is a weak proxy for sweep +# depth — a handful of astral probes can be deeper than hundreds of ASCII ones — +# so flooring it would false-trip a legitimately-thin-but-conformant sweep on a +# wide-spec subject (002-r1 A=5, 003-r2 A=105, both astral=y divergences=0, one a +# PASS report). astral (P2) is the real A/U depth gate; P3 only SURFACES the +# run-to-run depth variance as a note. SW_AASC_CORPUS_FLOOR tunes the threshold. # The `caveat=no-runnable-artifact` escape (a compiled language / no exec -# harness: triggered but the sweep could not be executed) exempts P1/P2/P3 for -# that line — a legit fail-OPEN degradation, NOT a violation. P4 still applies. -# P2/P3 are scoped to the alphabet (A) and unicode-transform (U) axes, where a -# large astral-inclusive complement corpus is the mandated breadth. The keyed (K) -# and canonical-writer (W) axes legitimately enumerate a small reflection-derived -# corpus (a structure's reserved/accessor/private-slot names are a handful of -# ASCII identifiers, never hundreds, never astral), so flooring them would -# false-trip. P1 and P4 are axis-independent. +# harness: triggered but the sweep could not be executed) exempts P1/P2 (and the +# P3 advisory) for that line — a legit fail-OPEN degradation. P4 still applies. +# P2/P3 are scoped to the alphabet (A) and unicode-transform (U) axes; the keyed +# (K) and canonical-writer (W) axes legitimately enumerate a small reflection- +# derived corpus (reserved/accessor/private-slot names — a handful of ASCII +# identifiers, never astral), so the astral/corpus checks do not apply to them. +# P1 and P4 are axis-independent. The `## Accept-set sweep` header is matched +# case-insensitively (a mis-cased header must not let a whole report skip the gate). # # Kill switch SW_ACCEPT_SET_CONFORMANCE_MODE: # metric-only (DEFAULT) -> observe: log `[ACCEPT-SET-VERIFY] metric-only: would block ...`, ALLOW. @@ -46,8 +52,9 @@ # off -> explicit opt-out: silent skip. # unknown -> collapses to metric-only (a typo neither enforces nor silently disables). # -# Corpus floor SW_AASC_CORPUS_FLOOR (default 256) — the P3 minimum corpus size -# for an A/U-axis triggered+run sweep; env-tunable per host/subject. +# Corpus floor SW_AASC_CORPUS_FLOOR (default 256) — the P3 ADVISORY threshold for +# an A/U-axis triggered+run sweep; a thinner corpus is NOTED (never blocked), and +# the threshold is env-tunable per host/subject. # # Fail-OPEN iron rule: this hook MUST NEVER break the host Write/Edit. jq # missing, an unreadable report, a non-eval path, a skeleton (IN_PROGRESS) write, @@ -89,8 +96,10 @@ case "$FIRST_STATUS" in esac # Gate 2b: no `## Accept-set sweep` section -> nothing persisted to verify -# (sweep not in scope, or a pre-v8.5.0 / degraded report). Fail-OPEN. -grep -qE '^## Accept-set sweep[[:space:]]*$' "$TOOL_FILE_PATH" 2>/dev/null || exit 0 +# (sweep not in scope, or a pre-v8.5.0 / degraded report). Fail-OPEN. Matched +# case-insensitively so a mis-cased header (`## Accept-set Sweep`) cannot let a +# whole report skip the gate (dogfood51: 001-r2 used a capital-S header). +grep -qiE '^## accept-set sweep[[:space:]]*$' "$TOOL_FILE_PATH" 2>/dev/null || exit 0 # Gate 3: kill switch. Unknown collapses to metric-only. MODE_RAW="${SW_ACCEPT_SET_CONFORMANCE_MODE:-metric-only}" @@ -108,7 +117,7 @@ esac # Extract the `## Accept-set sweep` section body (heading exclusive, up to the # next `## ` heading or EOF). SECTION=$(awk ' - /^## Accept-set sweep[[:space:]]*$/ { f=1; next } + /^## [Aa]ccept-set [Ss]weep[[:space:]]*$/ { f=1; next } /^## / { f=0 } f ' "$TOOL_FILE_PATH" 2>/dev/null || true) @@ -132,7 +141,8 @@ field_of() { printf '%s' "${v#*=}" } -VIOLATIONS="" +BLOCKING="" +ADVISORY="" while IFS= read -r LINE; do case "$LINE" in boundary=*) ;; @@ -146,31 +156,36 @@ while IFS= read -r LINE; do DIV=$(field_of "$LINE" divergences) AUTH=$(field_of "$LINE" authoritative) CAVEAT=$(field_of "$LINE" caveat) + # corpus-size may carry a descriptive suffix (dogfood51: `10-non-ascii-decimal`); + # take the leading integer so an annotation cannot dodge the P3 advisory. + CORPUS_INT="${CORPUS%%-*}" REASON="" # The no-runnable-artifact caveat is the documented fail-OPEN escape (a # compiled language / no exec harness: the boundary was triggered but the # sweep could not be executed). It exempts the execution + depth predicates - # P1/P2/P3 (ran=n / astral=n / corpus=0 are then justified, not violations); - # the gating-consistency predicate P4 still applies. + # P1/P2 (and the P3 advisory); the gating-consistency predicate P4 still applies. if [ "$CAVEAT" != "no-runnable-artifact" ]; then - # P1 stand-down (all axes): a triggered boundary that was not run. + # P1 stand-down (all axes): a triggered boundary that was not run -> BLOCK. if [ "$TRIG" = "y" ] && [ "$RAN" = "n" ]; then REASON="P1-stand-down" elif [ "$TRIG" = "y" ] && [ "$RAN" = "y" ]; then - # P2 shallow astral (A,U axes): astral complement skipped. + # P2 shallow astral (A,U axes): astral complement skipped -> BLOCK (astral + # is the real A/U depth gate; the planes are the mandated alphabet complement). if { [ "$B" = "A" ] || [ "$B" = "U" ]; } && [ "$ASTRAL" = "n" ]; then REASON="P2-shallow-astral" - # P3 sliced corpus (A,U axes): corpus below the floor. + # P3 thin corpus (A,U axes): corpus below the floor -> ADVISORY ONLY, never + # blocks (corpus-size is a weak depth proxy; flooring it false-trips a + # legitimately-thin conformant sweep on a wide-spec subject — dogfood51). elif { [ "$B" = "A" ] || [ "$B" = "U" ]; } \ - && printf '%s' "$CORPUS" | grep -qE '^[0-9]+$' \ - && [ "$CORPUS" -lt "$CORPUS_FLOOR" ]; then - REASON="P3-sliced-corpus(<$CORPUS_FLOOR)" + && printf '%s' "$CORPUS_INT" | grep -qE '^[0-9]+$' \ + && [ "$CORPUS_INT" -lt "$CORPUS_FLOOR" ]; then + ADVISORY="${ADVISORY}boundary=${B} triggered=${TRIG} ran=${RAN} astral=${ASTRAL} corpus-size=${CORPUS} note=P3-thin-corpus(<$CORPUS_FLOOR)"$'\n' fi fi fi # P4 gating-consistency (all axes): an authoritative boundary with divergences - # must drive the verdict to FAIL. + # must drive the verdict to FAIL -> BLOCK. if [ -z "$REASON" ] && [ "$AUTH" = "y" ] \ && printf '%s' "$DIV" | grep -qE '^[0-9]+$' \ && [ "$DIV" -gt 0 ] && [ "$STATUS_IS_FAIL" = "0" ]; then @@ -178,21 +193,36 @@ while IFS= read -r LINE; do fi [ -n "$REASON" ] || continue - VIOLATIONS="${VIOLATIONS}boundary=${B} triggered=${TRIG} ran=${RAN} astral=${ASTRAL} corpus-size=${CORPUS} reason=${REASON}"$'\n' + BLOCKING="${BLOCKING}boundary=${B} triggered=${TRIG} ran=${RAN} astral=${ASTRAL} corpus-size=${CORPUS} reason=${REASON}"$'\n' done < silent pass. +[ -n "$BLOCKING$ADVISORY" ] || exit 0 BASENAME=$(basename "$TOOL_FILE_PATH") +# Advisory notes (P3 thin-corpus) are emitted in BOTH modes and NEVER block — +# corpus depth is subject-dependent, so this is observability, not a gate. +if [ -n "$ADVISORY" ]; then + while IFS= read -r V; do + [ -n "$V" ] || continue + echo "[ACCEPT-SET-VERIFY] advisory: $BASENAME $V" >&2 + done < exit 0 (an advisory-only report is not a block). +[ -n "$BLOCKING" ] || exit 0 + if [ "$MODE" = "metric-only" ]; then while IFS= read -r V; do [ -n "$V" ] || continue echo "[ACCEPT-SET-VERIFY] metric-only: would block (file=$BASENAME $V)" >&2 done <&2 done <= the floor; an authoritative divergence must drive the verdict to FAIL. Re-run the EXECUTED accept-set sweep per agents/ac-evaluator.md and rewrite the report." \ +REASON_TEXT=$(printf '%s' "$BLOCKING" | tr '\n' ';' | sed 's/;$//') +jq -n --arg r "Accept-set conformance gate (AASC): the persisted '## Accept-set sweep' in $BASENAME records a NON-CONFORMANT sweep — $REASON_TEXT. A triggered boundary must be EXECUTED (ran=y); an alphabet/unicode sweep must include the astral complement (astral=y); an authoritative divergence must drive the verdict to FAIL. Re-run the EXECUTED accept-set sweep per agents/ac-evaluator.md and rewrite the report." \ '{decision:"block", reason:$r}' exit 0 diff --git a/skills/create-ticket/references/autopilot-policy-reference.md b/skills/create-ticket/references/autopilot-policy-reference.md index ea38a6c..7e95ca2 100644 --- a/skills/create-ticket/references/autopilot-policy-reference.md +++ b/skills/create-ticket/references/autopilot-policy-reference.md @@ -303,9 +303,10 @@ ADVISORY PASS-WITH-CAVEATS (the EC-SELFDOC fail-open posture). The evaluator persists one `## Accept-set sweep` line per inspected boundary, and `hooks/accept-set-verify.sh` deterministically verifies that line — a triggered boundary not run, an alphabet/unicode (A/U-axis) sweep that skipped the astral -complement or used a sliced corpus, or an authoritative divergence not driven to -FAIL is flagged (metric-only by default; see CLAUDE.md -`SW_ACCEPT_SET_CONFORMANCE_MODE`). When `off`, the EXECUTED sweep and the hook +complement, or an authoritative divergence not driven to FAIL is BLOCKED, and a +thin A/U corpus is NOTED (advisory only, never blocked — corpus-size is a weak +depth proxy; see CLAUDE.md `SW_ACCEPT_SET_CONFORMANCE_MODE` / `SW_AASC_CORPUS_FLOOR`), +all metric-only by default. When `off`, the EXECUTED sweep and the hook gate stand down: the evaluator verifies the boundary by the prior read-only strictness reasoning and records a one-line Caveat — the byte-for-byte revert. This is the per-brief kill switch for the Advertised-Accept-Set Conformance diff --git a/tests/test-accept-set-verify.sh b/tests/test-accept-set-verify.sh index 90b8715..63bde35 100755 --- a/tests/test-accept-set-verify.sh +++ b/tests/test-accept-set-verify.sh @@ -39,6 +39,8 @@ expect_block() { if [ "$LAST_EXIT_CODE" -eq 0 ] && echo "$LAST_STDOUT" | grep expect_noblock() { if [ "$LAST_EXIT_CODE" -eq 0 ] && ! echo "$LAST_STDOUT" | grep -q '"decision"'; then pass_local "$1"; else fail_local "$1"; fi; } expect_metric() { if [ "$LAST_EXIT_CODE" -eq 0 ] && echo "$LAST_STDERR" | grep -qF '[ACCEPT-SET-VERIFY] metric-only: would block'; then pass_local "$1"; else fail_local "$1"; fi; } expect_silent() { if [ "$LAST_EXIT_CODE" -eq 0 ] && [ -z "$LAST_STDOUT" ] && [ -z "$LAST_STDERR" ]; then pass_local "$1"; else fail_local "$1"; fi; } +# P3 thin-corpus is ADVISORY (dogfood51): a stderr note, NEVER a block. +expect_advisory() { if [ "$LAST_EXIT_CODE" -eq 0 ] && echo "$LAST_STDERR" | grep -qF '[ACCEPT-SET-VERIFY] advisory:' && ! echo "$LAST_STDOUT" | grep -q '"decision"'; then pass_local "$1"; else fail_local "$1"; fi; } # ---- Fixtures ------------------------------------------------------------- mkfix eval-round-F1.md "## Status: FAIL @@ -101,6 +103,29 @@ mkfix some-other-file.md "## Status: PASS ## Accept-set sweep boundary=A triggered=y ran=n astral=n corpus-size=0 divergences=0 authoritative=y caveat=none" +# dogfood51-derived fixtures. +# Fcap: a mis-cased `## Accept-set Sweep` header (capital S) must still be READ +# (case-insensitive Gate 2b) so a P1 stand-down under it is caught, not skipped. +mkfix eval-round-Fcap.md "## Status: FAIL + +## Accept-set Sweep +boundary=K triggered=y ran=n astral=n corpus-size=0 divergences=0 authoritative=y caveat=none" + +# Fthin: the dogfood51 002-r1 shape — a thin-but-conformant A sweep on a PASS +# report (A=5, astral=y, divergences=0). P3 is ADVISORY now, so this must NOT +# block (the false-trip the confirmation dogfood surfaced). +mkfix eval-round-Fthin.md "## Status: PASS + +## Accept-set sweep +boundary=A triggered=y ran=y astral=y corpus-size=5 divergences=0 authoritative=y caveat=none" + +# Fsuffix: a descriptive corpus-size (dogfood51 001-r1: `5-canonical-forms`) — the +# leading integer is parsed so the annotation cannot dodge the P3 advisory. +mkfix eval-round-Fsuffix.md "## Status: PASS + +## Accept-set sweep +boundary=A triggered=y ran=y astral=y corpus-size=5-canonical-forms divergences=0 authoritative=n caveat=none" + # ---- MODE=on (enforce) ---------------------------------------------------- echo "--- MODE=on (enforce: decision:block on violation) ---" export SW_ACCEPT_SET_CONFORMANCE_MODE=on SW_AASC_CORPUS_FLOOR=256 @@ -108,9 +133,9 @@ run_fix eval-round-F1.md; expect_block "F1 P1 stand-down (triggered=y ran=n) run_fix eval-round-F2.md; expect_block "F2 P2 shallow-astral (A axis) -> block" run_fix eval-round-F3.md; expect_noblock "F3 no-runnable-artifact escape (ran=y) -> no block" run_fix eval-round-F3b.md; expect_noblock "F3b no-runnable-artifact (ran=n, legit degradation) -> no block" -run_fix eval-round-F4.md; expect_block "F4 P3 sliced-corpus (U axis, 12<256) -> block" +run_fix eval-round-F4.md; expect_advisory "F4 thin corpus (U axis, 12<256) -> ADVISORY only, NOT block (P3 demoted, dogfood51)" export SW_AASC_CORPUS_FLOOR=8 -run_fix eval-round-F4.md; expect_noblock "F4 floor=8 -> no block (SW_AASC_CORPUS_FLOOR tunable)" +run_fix eval-round-F4.md; expect_noblock "F4 floor=8 -> no advisory, silent (12>=8, SW_AASC_CORPUS_FLOOR tunable)" export SW_AASC_CORPUS_FLOOR=256 run_fix eval-round-F5.md; expect_block "F5 P4 gating-inconsistency (auth=y div=2 PASS) -> block" run_fix eval-round-F6.md; expect_noblock "F6 dogfood50 clean shape -> NO false trip" @@ -119,6 +144,9 @@ run_fix eval-round-F7b.md; expect_noblock "F7b n/a fallback -> no block" run_fix eval-round-F9.md; expect_noblock "F9 skeleton IN_PROGRESS (Gate 2a) -> no block" run_fix eval-round-F10.md; expect_noblock "F10 terminal, no sweep section (Gate 2b) -> no block" run_fix some-other-file.md; expect_noblock "F8 non-eval path (Gate 1) -> no block" +run_fix eval-round-Fcap.md; expect_block "Fcap capital-S header + P1 -> READ case-insensitively + block (dogfood51 fix #2)" +run_fix eval-round-Fthin.md; expect_advisory "Fthin thin-but-conformant A=5 astral=y PASS report -> advisory, NO block (dogfood51 002-r1 false-trip fix)" +run_fix eval-round-Fsuffix.md; expect_advisory "Fsuffix descriptive corpus-size (5-canonical-forms) -> leading-int parsed -> advisory (dogfood51 fix #3)" # ---- MODE=metric-only (default; observe only) ----------------------------- echo "--- MODE=metric-only (default: observe, never block) ---" @@ -128,6 +156,7 @@ run_fix eval-round-F2.md; expect_metric "F2 -> metric-only would-block stderr" run_fix eval-round-F5.md; expect_metric "F5 -> metric-only would-block stderr" run_fix eval-round-F6.md; expect_silent "F6 clean -> silent (no metric line)" run_fix eval-round-F7.md; expect_silent "F7 -> silent (no false trip)" +run_fix eval-round-Fthin.md; expect_advisory "Fthin metric-only -> advisory note (P3 is advisory in BOTH modes, never would-block)" # ---- MODE=off (explicit opt-out) ------------------------------------------ echo "--- MODE=off (explicit opt-out: silent) ---" From d54c759f6921e3138031f453654ed6be99c332b4 Mon Sep 17 00:00:00 2001 From: aimsise Date: Fri, 19 Jun 2026 02:32:28 +0900 Subject: [PATCH 13/15] fix(eval): AASC hook robustness + EC-taxonomy uniformity (pre-dogfood branch audit) A holistic pre-dogfood audit of impl/eval-p0-batch (12 commits vs main, both axes of the product/language/domain-agnostic x meet-or-beat philosophy, plus complete resolution of every conversation/dogfood problem) returned fully-agnostic / all-resolved / meets-or-beats / GO, and surfaced a small set of robustness + doc-consistency residues in the determinism backstop. All are mechanism or sibling-uniformity fixes (NOT recognition-gated prose); each closes a silent-escape / contradiction class; none re-introduces the dogfood51 false-trip class (every real dogfood51 report still 0 blocks in on-mode). hooks/accept-set-verify.sh (header-drift + parse robustness; fail-OPEN intact): - Gate 2b + the section awk now match the header at ANY hash depth (`#{1,6}`), not only `##` -- a mis-LEVELED header (`### Accept-set sweep`, live-observed in the dogfood51 003 eval-round-3) no longer lets a whole report silently skip the gate (same drift class as the dogfood51 capital-S header, on the depth axis). - the section awk start-pattern is now fully case-insensitive via tolower(), so it accepts the SAME set as Gate 2b's `grep -i` (any case incl ALL-CAPS, not only a flexed first letter) -- the two header-matchers can no longer disagree (an all-caps header that passed Gate 2b would previously extract nothing -> silent blunt). - field_of value class `[^ ]+` -> `[^[:space:]]+` so a TAB-separated sweep line still has its fields extracted (was silently un-parsed). - line selector `boundary=*` -> `*boundary=*` so a reordered (boundary-not-first) but complete line is no longer skipped (field_of is order-independent). - an off-grammar boundary label (not A/U/W/K; live `boundary=pair-shape`) now emits a stderr `[ACCEPT-SET-VERIFY] off-grammar boundary label=...` WARN -- a relabeled alphabet boundary would otherwise dodge the A/U astral gate silently. Deliberately a WARN, NOT a block (fail-toward-observability; never re-introduce the dogfood51 false-trip class). Exit code stays 0 (fail-OPEN invariant intact). skills/impl/references/evidence-channels.md: the EC-taxonomy reference both evaluators cite still carried the stale "MR-KEYFAITH is ASSUMED, not proven / advisory-only" posture that 3999964 already upgraded in both twins + the harness doc -- restated as the SAME two-tier oracle-authoritative FAIL gate, so a reader there no longer downgrades a genuine narrow-keyed-boundary leak the twins FAIL. tests/test-skill-contracts.sh: CT-AASC-10 now ALSO scans evidence-channels.md for the absence of the stale posture -- the sibling-artifact uniformity rule (CLAUDE.md ## Modifications) is now MECHANIZED, closing the gap that let the contradiction ship. tests/test-accept-set-verify.sh: + Fhash (mis-leveled `###` header + P1 -> block), Ftab (tab-separated line + P1 -> block), Fcaps (all-caps header + P1 -> block), RED-first regressions for the three closed header/parse escapes. Audit verdict (HIGH confidence, 11-agent adversarial workflow): agnostic_verdict= fully-agnostic (CT-DECONTAM-1=0; every trigger/rubric/MR keys off a property -- lexical strict/canonical/lossless/limit, shared_input_boundary, keyed-structure-from-untrusted-input -- not a named product/lang/domain; MR-ALPHABET selects by the Unicode decimal-digit property, MR-KEYFAITH derives the key corpus by reflection, both name no script/key); problems_resolved=all-resolved (cue-accretion, AASC generation gap, non-uniform execution, run-to-run variance, (b) hand-picked corpus, dogfood51 P3/format-drift each cite a concrete artifact); quality_verdict=meets-or-beats (the four baseline MR classes are property-driven + EXECUTED + proven by the committed design-oracles; the fail-OPEN hook can never REMOVE a catch). GO for the next dogfood. Tests: test-skill-contracts 852/852, test-accept-set-verify 29/29 (+Fhash +Ftab +Fcaps), test-path-consistency 144/144, ShellCheck --severity=warning clean, CT-DECONTAM-1 0 hits, ac-evaluator twins byte-identical (CT-EV-MODEL-1; twins untouched), all 6 real dogfood51 ground-truth reports still 0 blocks / 0 nonzero-rc in on-mode (no false trip re-introduced). Open residuals (honestly-bounded NON-BLOCKERS, unchanged): the on-mode BLOCK path has never fired LIVE (ships metric-only + fail-OPEN); run-to-run variance is mitigated not eliminated (the triggered-on= compute is still orchestrator-LLM- mediated -- full determinism would need on-mode promotion + a pre-spawn trigger); generation-side depth variance (uniform in KIND, not always exhaustive DEPTH); one inherited pre-main domain-list label nit (out of branch scope). Co-Authored-By: Claude Opus 4.8 (1M context) --- hooks/accept-set-verify.sh | 25 ++++++++++++++++----- skills/impl/references/evidence-channels.md | 8 +++++-- tests/test-accept-set-verify.sh | 24 ++++++++++++++++++++ tests/test-skill-contracts.sh | 8 +++++-- 4 files changed, 55 insertions(+), 10 deletions(-) diff --git a/hooks/accept-set-verify.sh b/hooks/accept-set-verify.sh index e082c89..a048732 100755 --- a/hooks/accept-set-verify.sh +++ b/hooks/accept-set-verify.sh @@ -44,7 +44,8 @@ # derived corpus (reserved/accessor/private-slot names — a handful of ASCII # identifiers, never astral), so the astral/corpus checks do not apply to them. # P1 and P4 are axis-independent. The `## Accept-set sweep` header is matched -# case-insensitively (a mis-cased header must not let a whole report skip the gate). +# case-insensitively AND at any hash depth (`#`..`######`), so neither a mis-cased +# nor a mis-leveled header can let a whole report silently skip the gate. # # Kill switch SW_ACCEPT_SET_CONFORMANCE_MODE: # metric-only (DEFAULT) -> observe: log `[ACCEPT-SET-VERIFY] metric-only: would block ...`, ALLOW. @@ -99,7 +100,7 @@ esac # (sweep not in scope, or a pre-v8.5.0 / degraded report). Fail-OPEN. Matched # case-insensitively so a mis-cased header (`## Accept-set Sweep`) cannot let a # whole report skip the gate (dogfood51: 001-r2 used a capital-S header). -grep -qiE '^## accept-set sweep[[:space:]]*$' "$TOOL_FILE_PATH" 2>/dev/null || exit 0 +grep -qiE '^#{1,6}[[:space:]]+accept-set sweep[[:space:]]*$' "$TOOL_FILE_PATH" 2>/dev/null || exit 0 # Gate 3: kill switch. Unknown collapses to metric-only. MODE_RAW="${SW_ACCEPT_SET_CONFORMANCE_MODE:-metric-only}" @@ -117,8 +118,8 @@ esac # Extract the `## Accept-set sweep` section body (heading exclusive, up to the # next `## ` heading or EOF). SECTION=$(awk ' - /^## [Aa]ccept-set [Ss]weep[[:space:]]*$/ { f=1; next } - /^## / { f=0 } + tolower($0) ~ /^#{1,6}[[:space:]]+accept-set sweep[[:space:]]*$/ { f=1; next } + /^#{1,6}[[:space:]]/ { f=0 } f ' "$TOOL_FILE_PATH" 2>/dev/null || true) @@ -137,18 +138,30 @@ esac # field_of -> the token value (empty if absent). field_of() { local v - v=$(printf '%s\n' "$1" | grep -oE "$2=[^ ]+" | head -1) || true + v=$(printf '%s\n' "$1" | grep -oE "$2=[^[:space:]]+" | head -1) || true printf '%s' "${v#*=}" } BLOCKING="" ADVISORY="" while IFS= read -r LINE; do + # Select any sweep line carrying a boundary= token (field_of is order-independent, + # so a reordered-but-complete line is no longer skipped). The section is already + # bounded to the `## Accept-set sweep` block by the awk extractor above. case "$LINE" in - boundary=*) ;; + *boundary=*) ;; *) continue ;; esac B=$(field_of "$LINE" boundary) + # Off-grammar boundary label (not A/U/W/K): the A/U astral-depth gate is keyed to + # A|U, so a relabeled alphabet boundary would silently dodge it. Surface it on + # stderr (fail-toward-observability; not a block, to avoid false-tripping a genuine + # W/K-class sweep) so format drift in the only recognition-independent lever is seen. + case "$B" in + A|U|W|K) ;; + "") ;; + *) printf '[ACCEPT-SET-VERIFY] off-grammar boundary label=%s in %s\n' "$B" "$(basename "$TOOL_FILE_PATH")" >&2 ;; + esac TRIG=$(field_of "$LINE" triggered) RAN=$(field_of "$LINE" ran) ASTRAL=$(field_of "$LINE" astral) diff --git a/skills/impl/references/evidence-channels.md b/skills/impl/references/evidence-channels.md index 457273d..14e57f6 100644 --- a/skills/impl/references/evidence-channels.md +++ b/skills/impl/references/evidence-channels.md @@ -80,8 +80,12 @@ but is NOT independent evidence for a *behavioral* AC on its own. draws from — a behavioral AC still names one of those four. FAIL gating is oracle-authoritative two-tier (force-FAIL only on a strictly-narrower advertised contract; otherwise advisory `[MEDIUM]`), and where no runnable artifact exists it - is **fail-open** with a Caveat. MR-KEYFAITH is **ASSUMED, not proven**: treat an - MR-KEYFAITH divergence as advisory unless a concrete drop / mutation is observed. + is **fail-open** with a Caveat. An MR-KEYFAITH divergence (a concrete key drop / + overwrite / host-metadata mutation on a keyed boundary the oracle authoritatively + narrows) is subject to the SAME two-tier oracle-authoritative FAIL gate as the + other relations — force-FAIL when the advertised contract is strictly narrower, + advisory `[MEDIUM]` only where the keyed boundary is legitimately WIDE; it is NOT + a weaker advisory-only floor. - **EC-RUNTIME** — black-box observation through the real public / protocol boundary: the real CLI, the real MCP `Client` over a transport, the exported public API, a rendered DOM — never internal handlers reached by reflection or by imports a real diff --git a/tests/test-accept-set-verify.sh b/tests/test-accept-set-verify.sh index 63bde35..2930997 100755 --- a/tests/test-accept-set-verify.sh +++ b/tests/test-accept-set-verify.sh @@ -126,6 +126,27 @@ mkfix eval-round-Fsuffix.md "## Status: PASS ## Accept-set sweep boundary=A triggered=y ran=y astral=y corpus-size=5-canonical-forms divergences=0 authoritative=n caveat=none" +# Fhash: a mis-LEVELED header (`### Accept-set sweep`, three hashes) must still be +# READ (Gate 2b + section awk match any hash depth) so a P1 stand-down under it is +# caught, not skipped. Live-observed in the dogfood51 ground-truth (003 eval-round-3). +# Same drift class as Fcap, on the hash-depth axis. +mkfix eval-round-Fhash.md "## Status: FAIL + +### Accept-set sweep +boundary=K triggered=y ran=n astral=n corpus-size=0 divergences=0 authoritative=y caveat=none" + +# Ftab: a tab-separated sweep line must still have its fields extracted (field_of +# value class is whitespace-bounded, not space-only) so a P1 stand-down is caught. +printf '## Status: FAIL\n\n## Accept-set sweep\nboundary=K\ttriggered=y\tran=n\tastral=n\tcorpus-size=0\tdivergences=0\tauthoritative=y\tcaveat=none\n' > "$FIXDIR/eval-round-Ftab.md" + +# Fcaps: an ALL-CAPS header (`## ACCEPT-SET SWEEP`) must still be READ — Gate 2b is +# grep -i and the section awk lowercases via tolower(), so the two header-matchers +# accept the SAME set (any case, any hash depth); a bad sweep under it cannot escape. +mkfix eval-round-Fcaps.md "## Status: FAIL + +## ACCEPT-SET SWEEP +boundary=K triggered=y ran=n astral=n corpus-size=0 divergences=0 authoritative=y caveat=none" + # ---- MODE=on (enforce) ---------------------------------------------------- echo "--- MODE=on (enforce: decision:block on violation) ---" export SW_ACCEPT_SET_CONFORMANCE_MODE=on SW_AASC_CORPUS_FLOOR=256 @@ -147,6 +168,9 @@ run_fix some-other-file.md; expect_noblock "F8 non-eval path (Gate 1) -> no bloc run_fix eval-round-Fcap.md; expect_block "Fcap capital-S header + P1 -> READ case-insensitively + block (dogfood51 fix #2)" run_fix eval-round-Fthin.md; expect_advisory "Fthin thin-but-conformant A=5 astral=y PASS report -> advisory, NO block (dogfood51 002-r1 false-trip fix)" run_fix eval-round-Fsuffix.md; expect_advisory "Fsuffix descriptive corpus-size (5-canonical-forms) -> leading-int parsed -> advisory (dogfood51 fix #3)" +run_fix eval-round-Fhash.md; expect_block "Fhash mis-leveled header (### Accept-set sweep) + P1 -> READ at any hash depth + block (live 003 eval-round-3 escape)" +run_fix eval-round-Ftab.md; expect_block "Ftab tab-separated sweep line + P1 -> fields extracted (whitespace-bounded class) + block" +run_fix eval-round-Fcaps.md; expect_block "Fcaps all-caps header (## ACCEPT-SET SWEEP) + P1 -> READ (awk tolower == Gate2b -i) + block" # ---- MODE=metric-only (default; observe only) ----------------------------- echo "--- MODE=metric-only (default: observe, never block) ---" diff --git a/tests/test-skill-contracts.sh b/tests/test-skill-contracts.sh index 8912690..57781d8 100644 --- a/tests/test-skill-contracts.sh +++ b/tests/test-skill-contracts.sh @@ -10330,9 +10330,13 @@ aasc10_a=$(grep -cF "$aasc10_tok" "$ACEV_EV" || true) aasc10_b=$(grep -cF "$aasc10_tok" "$ACEVHI_EV" || true) aasc10_old_a=$(grep -cF 'ASSUMED, not proven' "$ACEV_EV" || true) aasc10_old_b=$(grep -cF 'ASSUMED, not proven' "$ACEVHI_EV" || true) +# Sibling-artifact uniformity (CLAUDE.md Modifications rule): the cross-linked EC-taxonomy +# reference both evaluators point to must NOT carry the stale ASSUMED/advisory-only posture, +# else a reader there downgrades a genuine narrow-keyed-boundary leak the twins now FAIL-gate. +aasc10_old_ech=$(grep -cF 'ASSUMED, not proven' "$ECH_EV" || true) aasc10_result="false" -if [ "$aasc10_a" -ge 1 ] && [ "$aasc10_b" -ge 1 ] && [ "$aasc10_old_a" -eq 0 ] && [ "$aasc10_old_b" -eq 0 ]; then aasc10_result="true"; fi -assert_true "CT-AASC-10 (MR-KEYFAITH gating proven-upgrade, both twins): folded-gate phrase acev ($aasc10_a>=1) hi ($aasc10_b>=1), ASSUMED removed acev ($aasc10_old_a=0) hi ($aasc10_old_b=0)" "$aasc10_result" +if [ "$aasc10_a" -ge 1 ] && [ "$aasc10_b" -ge 1 ] && [ "$aasc10_old_a" -eq 0 ] && [ "$aasc10_old_b" -eq 0 ] && [ "$aasc10_old_ech" -eq 0 ]; then aasc10_result="true"; fi +assert_true "CT-AASC-10 (MR-KEYFAITH gating proven-upgrade, both twins + EC ref): folded-gate phrase acev ($aasc10_a>=1) hi ($aasc10_b>=1), ASSUMED removed acev ($aasc10_old_a=0) hi ($aasc10_old_b=0) evidence-channels ($aasc10_old_ech=0)" "$aasc10_result" # CT-AASC-11 (round-trip oracle from input-pairs last-write-wins; harness doc). # LOAD-BEARING: the worked MR-KEYFAITH (b) oracle must compute its expectation FROM THE INPUT PAIRS by last-write-wins, From 2e8c1f6a31b347954fed17c23919b44438df7dd8 Mon Sep 17 00:00:00 2001 From: aimsise Date: Sat, 20 Jun 2026 00:56:35 +0900 Subject: [PATCH 14/15] feat(eval): promote AASC hook default metric-only -> on (de-risked enforce by default) Promote SW_ACCEPT_SET_CONFORMANCE_MODE default from metric-only to `on`, per the repo promotion discipline (ship metric-only, promote after a dogfood confirms no false trips) -- now satisfied with strong evidence: - dogfood51 (6 reports) + dogfood52 (8 reports) = 14 real conformant eval-round reports, 0 false-trips under the committed hook in on-mode (re-verified here under the NEW unset default = 0 blocks over all 14). - dogfood53 live de-risk: a fault-injected non-conformant report (triggered=y ran=n) Written under SW_ACCEPT_SET_CONFORMANCE_MODE=on produced a real live decision:block -- the AASC reason surfaced cleanly, the model handled it gracefully (no thrash/loop, Claude Code stayed alive) and was NOT pressured into fabricating a conformant line (it declined to flip ran=y/astral=y without actually running). decision:block is the same mechanism the other PostToolUse guards (pre-write-safety etc.) already use on subagent writes. Change: the hook now ENFORCES by default -- a genuinely non-conformant persisted `## Accept-set sweep` (P1 stand-down / P2 shallow-astral / P4 ungated authoritative divergence) emits a PostToolUse decision:block surfacing the reason to the evaluator to re-run the sweep. P3 thin-corpus stays ADVISORY (never blocks). The default is `on`, so the env var is set ONLY to downgrade; metric-only / off remain available, and a typo collapses to the safe observe (metric-only) mode (never a surprise enforce, never a silent disable). This is the INITIAL default of a NEW v8.5.0 feature (the AASC hook did not exist in v8.4.2), shipped on-by-default with a kill switch -- additive, not a change to any prior RELEASED behaviour. - hooks/accept-set-verify.sh: default `:-metric-only` -> `:-on` (+ header doc). - CLAUDE.md, skills/create-ticket/references/autopilot-policy-reference.md, skills/impl/references/ac-evaluator-orchestration.md: document on-by-default + the downgrade path. - tests/test-accept-set-verify.sh: + 3 unset-default tests (no env -> P1 blocks, thin-corpus advises, clean passes); the unknown->metric-only test stays valid. Tests: test-accept-set-verify 32/32, test-skill-contracts 852/852, ShellCheck --severity=warning clean, ac-evaluator twins untouched; 14 real dogfood51+52 reports under the NEW unset default = 0 blocks (no false-trip in enforce). Honest residual: the "real evaluator re-runs the sweep after a block" path is not yet exercised in a live autopilot run (dogfood51/52 produced conformant sweeps -> nothing to block; dogfood53 was a fault-injection where re-running was N/A). It is bounded by the autopilot round-cap + the metric-only/off kill switch. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 +- hooks/accept-set-verify.sh | 12 +++++++----- .../references/autopilot-policy-reference.md | 3 ++- skills/impl/references/ac-evaluator-orchestration.md | 9 +++++---- tests/test-accept-set-verify.sh | 10 ++++++++-- 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index eda09e1..c50468c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,7 +36,7 @@ This rule was distilled from a v6.7.0 dogfood incident in which a verify hook ne - `SW_SAFETY_JQ_MISSING_MODE` — default `metric-only`. Controls the jq-missing preflight at the top of the three safety hooks (`hooks/pre-bash-safety.sh`, `hooks/pre-write-safety.sh`, `hooks/pre-edit-safety.sh`). `jq` is a documented hard dependency; when it is absent these guards cannot parse the tool payload and previously died with a silent `exit 127` (which Claude Code treats as a non-blocking error — a fail-OPEN). Values: `on` (fail **closed** — `exit 2` with an explicit `[SAFETY-JQ-MISSING] : jq not found …` message, blocking the tool call), `metric-only` (default — log `[SAFETY-JQ-MISSING] metric-only: … would fail closed …` to stderr and ALLOW the call with `exit 0`, so the shipped fail-open behaviour is unchanged but now observable), `off` (silently allow, `exit 0`, no message). Unknown values collapse to `metric-only` (the observe-only default — a typo never silently flips the guard to fail-closed). **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips on a jq-present host, set `=on` to enforce fail-closed. The `[SAFETY-JQ-MISSING]` exit-2 path is verified under a PATH-restricted (no-jq) test in `tests/test-pre-bash-safety.sh` / `tests/test-pre-write-safety.sh` / `tests/test-pre-edit-safety.sh` with the knob set to `on`. - `SW_BASH_STATE_GUARD_MODE` — default `metric-only`. Controls detection 3 of `hooks/pre-bash-contract-guard.sh` (the autopilot-context PreToolUse:Bash guard): a Bash-mediated state-file status mutation — `yq -i` / `sed -i` / shell-redirect on `autopilot-state.yaml` / `phase-state.yaml` that drives a `status:` (or `steps.`) to `skipped` / `completed` / `failed` / `in_progress`. The Write/Edit skip-transition guard (`hooks/pre-state-transition.sh`) is wired only to Write/Edit, so this closes the Bash bypass (ST-04). Values: `on` (emit `decision:block` with `unauthorized_state_mutate_bash` — deny the call), `metric-only` (default — log `[PRE-BASH-CONTRACT-GUARD] metric-only: would deny ...` to stderr and ALLOW), `off` (skip detection 3 entirely). Unknown values collapse to `metric-only`. Detections 1 (forbidden manual_bash_fallbacks rationale) and 2 (direct `git commit`) are NOT gated by this knob — the hook's existing NAC posture is preserved. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Read-only commands (`grep`/`cat`/`yq` without `-i`) and `runtime_metrics` appends (no status transition) are not matched. - `SW_STATE_FIELD_GUARD_MODE` — default `metric-only`. Gates the **HOOK_OWNED_FIELDS enforcement** in `hooks/pre-write-safety.sh` / `hooks/pre-edit-safety.sh`. The registry now ships with `.runtime_metrics` (an append-only telemetry list written exclusively by the six runtime-metrics writer hooks — Foundation 3 / ST-03), so a model Write/Edit that would clobber hook-appended `runtime_metrics` entries (a lost-update) is detectable. Values: `on` (emit `decision:block` whose reason NAMES the violated field — e.g. `.runtime_metrics` — and references `docs/state-schema.md`), `metric-only` (default — log `[STATE-FIELD-GUARD] metric-only: would block ...` to stderr and ALLOW, so populating the registry does NOT change the shipped allow-by-default behaviour), `off` (allow silently). Unknown values collapse to `metric-only`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Detection covers the inline `runtime_metrics: []` → `[…]` (and blank-out) form; a multi-line list mutation expressed without an inline value change is not detected (acceptable under the metric-only default). -- `SW_ACCEPT_SET_CONFORMANCE_MODE` — default `metric-only`. Controls `hooks/accept-set-verify.sh`, the PostToolUse(Write|Edit) gate that deterministically verifies the persisted `## Accept-set sweep` section of an `eval-round-{n}.md` report (the Advertised-Accept-Set Conformance observability line written by `agents/ac-evaluator.md`'s Persistence-First terminal rewrite). The hook reads the EMITTED line and applies the lens's OWN self-incrimination rule with zero model recall — BLOCKING on a triggered boundary not run (P1), an alphabet/unicode (A/U-axis) sweep that skipped the astral complement (P2), or an authoritative divergence not driven to FAIL (P4); plus a non-blocking ADVISORY note when an A/U-axis corpus falls below `SW_AASC_CORPUS_FLOOR` (P3 — corpus-size is a weak depth proxy, so a thin corpus is surfaced, NEVER blocked; the dogfood51 confirmation run showed flooring it false-trips a legitimately-thin-but-conformant sweep, so P3 was demoted to advisory). The keyed (K) / canonical-writer (W) axes are exempt from the astral/corpus checks (a reflection-derived key corpus is legitimately small), `caveat=no-runnable-artifact` exempts P1/P2 and the P3 advisory (a compiled-language fail-open degradation), and the `## Accept-set sweep` header is matched case-insensitively (a mis-cased header cannot let a whole report skip the gate). Values: `on` (enforce — emit a PostToolUse `decision:block` whose reason names the violated predicate, surfacing it to the evaluator to re-run the sweep), `metric-only` (default — log `[ACCEPT-SET-VERIFY] metric-only: would block ...` to stderr and ALLOW, so the shipped behaviour is observe-only), `off` (explicit opt-out, silent). Unknown values collapse to `metric-only` (a typo neither enforces nor silently disables observation). The exit code is ALWAYS 0 (fail-OPEN — the hook can never break a Write/Edit; the only non-allow influence is the `on`-mode block JSON), and a missing `jq` is a silent `exit 0`. **Promotion**: ship at `metric-only`; after one dogfood confirms no false trips, set `=on` to enforce. Verified by `tests/test-accept-set-verify.sh`. This is the runtime, recognition-independent half of the per-brief `constraints.accept_set_conformance` switch (which gates whether the EXECUTED sweep runs at all). +- `SW_ACCEPT_SET_CONFORMANCE_MODE` — default `on` (v8.5.0). Controls `hooks/accept-set-verify.sh`, the PostToolUse(Write|Edit) gate that deterministically verifies the persisted `## Accept-set sweep` section of an `eval-round-{n}.md` report (the Advertised-Accept-Set Conformance observability line written by `agents/ac-evaluator.md`'s Persistence-First terminal rewrite). The hook reads the EMITTED line and applies the lens's OWN self-incrimination rule with zero model recall — BLOCKING on a triggered boundary not run (P1), an alphabet/unicode (A/U-axis) sweep that skipped the astral complement (P2), or an authoritative divergence not driven to FAIL (P4); plus a non-blocking ADVISORY note when an A/U-axis corpus falls below `SW_AASC_CORPUS_FLOOR` (P3 — corpus-size is a weak depth proxy, so a thin corpus is surfaced, NEVER blocked; the dogfood51 confirmation run showed flooring it false-trips a legitimately-thin-but-conformant sweep, so P3 was demoted to advisory). The keyed (K) / canonical-writer (W) axes are exempt from the astral/corpus checks (a reflection-derived key corpus is legitimately small), `caveat=no-runnable-artifact` exempts P1/P2 and the P3 advisory (a compiled-language fail-open degradation), and the `## Accept-set sweep` header is matched case-insensitively (a mis-cased header cannot let a whole report skip the gate). Values: `on` (DEFAULT, v8.5.0 — enforce: emit a PostToolUse `decision:block` whose reason names the violated predicate, surfacing it to the evaluator to re-run the sweep), `metric-only` (observe — log `[ACCEPT-SET-VERIFY] metric-only: would block ...` to stderr and ALLOW), `off` (explicit opt-out, silent). Unknown values collapse to `metric-only` (since the default is `on`, the var is set only to DOWNGRADE, so a typo on a downgrade value falls back to the safe observe mode — never a surprise enforce, never a silent disable). The exit code is ALWAYS 0 (fail-OPEN — the hook can never break a Write/Edit; the only non-allow influence is the `on`-mode block JSON), and a missing `jq` is a silent `exit 0`. **Promoted to `on` by default in v8.5.0** after dogfood51/52 (14 real conformant reports → 0 false-trips) + a live `decision:block` de-risk (dogfood53: the block surfaces cleanly and the evaluator handles it gracefully without thrash, and is NOT pressured into fabricating a conformant line); set `metric-only` to revert to observe-only, `off` to disable. Verified by `tests/test-accept-set-verify.sh`. This is the runtime, recognition-independent half of the per-brief `constraints.accept_set_conformance` switch (which gates whether the EXECUTED sweep runs at all). - `SW_AASC_CORPUS_FLOOR` — default `256`. The ADVISORY threshold for the P3 thin-corpus NOTE in `hooks/accept-set-verify.sh` (a thinner A/U corpus is surfaced to stderr as `[ACCEPT-SET-VERIFY] advisory: ...`, NEVER blocked), applied ONLY to a `triggered=y ran=y` alphabet (A) or unicode-transform (U) boundary line — the axes whose mandated complement (the Unicode decimal-digit property across the BMP and astral planes) is naturally large. A descriptive corpus-size (e.g. `5-canonical-forms`) is parsed by its leading integer so an annotation cannot dodge the note. Lower it (e.g. `=8`) to silence the note on a legitimately small advertised accept-set; raise it to surface more sweeps. Honoured only when `SW_ACCEPT_SET_CONFORMANCE_MODE` is not `off`. ## Language diff --git a/hooks/accept-set-verify.sh b/hooks/accept-set-verify.sh index a048732..271b193 100755 --- a/hooks/accept-set-verify.sh +++ b/hooks/accept-set-verify.sh @@ -48,10 +48,12 @@ # nor a mis-leveled header can let a whole report silently skip the gate. # # Kill switch SW_ACCEPT_SET_CONFORMANCE_MODE: -# metric-only (DEFAULT) -> observe: log `[ACCEPT-SET-VERIFY] metric-only: would block ...`, ALLOW. -# on -> enforce: emit a PostToolUse `decision: block` with the reason. -# off -> explicit opt-out: silent skip. -# unknown -> collapses to metric-only (a typo neither enforces nor silently disables). +# on (DEFAULT, v8.5.0 promotion) -> enforce: emit a PostToolUse `decision: block` with the reason. +# metric-only -> observe: log `[ACCEPT-SET-VERIFY] metric-only: would block ...`, ALLOW. +# off -> explicit opt-out: silent skip. +# unknown -> collapses to metric-only (the default is `on`, so the var is set +# ONLY to downgrade; a typo on a downgrade value falls back to the +# safe observe mode — never a surprise enforce, never a silent disable). # # Corpus floor SW_AASC_CORPUS_FLOOR (default 256) — the P3 ADVISORY threshold for # an A/U-axis triggered+run sweep; a thinner corpus is NOTED (never blocked), and @@ -103,7 +105,7 @@ esac grep -qiE '^#{1,6}[[:space:]]+accept-set sweep[[:space:]]*$' "$TOOL_FILE_PATH" 2>/dev/null || exit 0 # Gate 3: kill switch. Unknown collapses to metric-only. -MODE_RAW="${SW_ACCEPT_SET_CONFORMANCE_MODE:-metric-only}" +MODE_RAW="${SW_ACCEPT_SET_CONFORMANCE_MODE:-on}" case "$MODE_RAW" in on|metric-only|off) MODE="$MODE_RAW" ;; *) MODE="metric-only" ;; diff --git a/skills/create-ticket/references/autopilot-policy-reference.md b/skills/create-ticket/references/autopilot-policy-reference.md index 7e95ca2..4b1c2bc 100644 --- a/skills/create-ticket/references/autopilot-policy-reference.md +++ b/skills/create-ticket/references/autopilot-policy-reference.md @@ -306,7 +306,8 @@ boundary not run, an alphabet/unicode (A/U-axis) sweep that skipped the astral complement, or an authoritative divergence not driven to FAIL is BLOCKED, and a thin A/U corpus is NOTED (advisory only, never blocked — corpus-size is a weak depth proxy; see CLAUDE.md `SW_ACCEPT_SET_CONFORMANCE_MODE` / `SW_AASC_CORPUS_FLOOR`), -all metric-only by default. When `off`, the EXECUTED sweep and the hook +enforced (`on`) by default from v8.5.0 — set `SW_ACCEPT_SET_CONFORMANCE_MODE=metric-only` +for observe-only or `off` to disable the hook. When the policy field `off`, the EXECUTED sweep and the hook gate stand down: the evaluator verifies the boundary by the prior read-only strictness reasoning and records a one-line Caveat — the byte-for-byte revert. This is the per-brief kill switch for the Advertised-Accept-Set Conformance diff --git a/skills/impl/references/ac-evaluator-orchestration.md b/skills/impl/references/ac-evaluator-orchestration.md index 752d5fc..22eb57a 100644 --- a/skills/impl/references/ac-evaluator-orchestration.md +++ b/skills/impl/references/ac-evaluator-orchestration.md @@ -334,10 +334,11 @@ Step 15 (the per-AC deterministic trigger) and enforced post-hoc by The switch is independent of `verification_depth`, `oracle_verification`, `eval_panel`, and `independent_evidence`. The post-hoc gate -`hooks/accept-set-verify.sh` ships `metric-only` (observe, never block) and is -promoted to `on` after a clean dogfood (CLAUDE.md -`SW_ACCEPT_SET_CONFORMANCE_MODE`); the EXECUTED sweep itself runs whenever this -switch is not `off`. +`hooks/accept-set-verify.sh` ships `on` by default from v8.5.0 (enforce — emit a +PostToolUse `decision:block` on a non-conformant persisted sweep; set +`SW_ACCEPT_SET_CONFORMANCE_MODE=metric-only` to observe-only, `off` to disable — +CLAUDE.md); the EXECUTED sweep itself runs whenever this policy switch is not +`off`. ## Independent-evidence channels (all evaluator modes) diff --git a/tests/test-accept-set-verify.sh b/tests/test-accept-set-verify.sh index 2930997..219266b 100755 --- a/tests/test-accept-set-verify.sh +++ b/tests/test-accept-set-verify.sh @@ -172,8 +172,8 @@ run_fix eval-round-Fhash.md; expect_block "Fhash mis-leveled header (### Ac run_fix eval-round-Ftab.md; expect_block "Ftab tab-separated sweep line + P1 -> fields extracted (whitespace-bounded class) + block" run_fix eval-round-Fcaps.md; expect_block "Fcaps all-caps header (## ACCEPT-SET SWEEP) + P1 -> READ (awk tolower == Gate2b -i) + block" -# ---- MODE=metric-only (default; observe only) ----------------------------- -echo "--- MODE=metric-only (default: observe, never block) ---" +# ---- MODE=metric-only (explicit downgrade; observe only) ------------------ +echo "--- MODE=metric-only (explicit: observe, never block) ---" export SW_ACCEPT_SET_CONFORMANCE_MODE=metric-only SW_AASC_CORPUS_FLOOR=256 run_fix eval-round-F1.md; expect_metric "F1 -> metric-only would-block stderr" run_fix eval-round-F2.md; expect_metric "F2 -> metric-only would-block stderr" @@ -194,6 +194,12 @@ export SW_ACCEPT_SET_CONFORMANCE_MODE=enforce SW_AASC_CORPUS_FLOOR=256 run_fix eval-round-F1.md; expect_metric "F1 unknown-mode -> metric-only (not enforce, not off)" unset SW_ACCEPT_SET_CONFORMANCE_MODE SW_AASC_CORPUS_FLOOR +# ---- DEFAULT (no env var) -> on (v8.5.0 promotion) ------------------------ +echo "--- DEFAULT (env unset) -> on: the hook ENFORCES by default (v8.5.0) ---" +run_fix eval-round-F1.md; expect_block "F1 with NO env var -> on by DEFAULT (v8.5.0 promotion) -> block" +run_fix eval-round-Fthin.md; expect_advisory "Fthin with NO env var -> on default, thin corpus -> advisory (not block)" +run_fix eval-round-F6.md; expect_noblock "F6 with NO env var -> on default, clean -> no block" + # ---- jq-absent (fail-OPEN) ------------------------------------------------ echo "--- jq-absent (fail-OPEN exit 0) ---" RBIN=$(mktemp -d) From f9700eb675415df685f81604937d72d67ceaaf6b Mon Sep 17 00:00:00 2001 From: aimsise Date: Sat, 20 Jun 2026 01:39:49 +0900 Subject: [PATCH 15/15] release(v8.5.0): Advertised-Accept-Set Conformance + agnosticism codification + P0 safety hardening See CHANGELOG.md [8.5.0]. plugin.json bumped 8.4.2 -> 8.5.0. Pre-flight: skill-contracts 852/852, path-consistency 144/144, accept-set-verify 32/32, full per-suite sweep green, ShellCheck clean. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude-plugin/plugin.json | 2 +- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index e4adabb..4cce910 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "simple-workflow", "description": "The Claude Code plugin for an end-to-end AI development workflow — ticket management, multi-agent code review, security audit, and automated PR creation — built on a Harness for long-running AI agents with strict context management and cross-session learning.", - "version": "8.4.2", + "version": "8.5.0", "author": { "name": "aimsise", "url": "https://github.com/aimsise" diff --git a/CHANGELOG.md b/CHANGELOG.md index a3259d9..85beb5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [8.5.0] — 2026-06-20 + +**TL;DR.** Adds **Advertised-Accept-Set Conformance (AASC)** — a product-/language-/domain-agnostic meet-or-beat upgrade to verification. When a boundary advertises **strict / canonical / lossless / limit** (or shares an input class with a sibling), the `ac-evaluator` now **EXECUTES** a generative grammar-complement sweep in scratch and diffs the unit's accept-set against an **independent hand-coded oracle** — catching parse-accepted overflow, input-alphabet leaks (incl. astral Unicode digits), non-canonical accepts, and structural-key / prototype-pollution injection **by construction for all inputs**, instead of by recalling a product-specific keyword cue. A new recognition-independent PostToolUse hook (`hooks/accept-set-verify.sh`) deterministically gates the persisted sweep and **enforces by default**. This release also codifies the product/language/domain-**agnosticism** rules (the (A)/(B) substrate line + the meet-or-beat principle + the `CT-DECONTAM-1` product-instance recidivism guard) and lands the P0 safety / state-machinery hardening batch. Validated across dogfood43→53: a deliberately leak-inviting strict subject produced correct strict artifacts on every historically-failing trap, and a live `decision:block` de-risk confirmed the enforce path. Additive + kill-switched: `constraints.accept_set_conformance: off` or `SW_ACCEPT_SET_CONFORMANCE_MODE=off` reverts byte-for-byte to the pre-v8.5.0 read-only strictness reasoning. + +### Added + +- **Advertised-Accept-Set Conformance — the executed accept-set sweep.** For an AC whose boundary advertises strict / canonical / lossless / limit OR belongs to a `shared_input_boundary` sibling family, the `ac-evaluator` derives a per-boundary **Grammar Card** (`A` alphabet / `U` unicode-transform / `W` canonical-writer / `K` keyed-structure) and EXECUTES four machine-generated metamorphic relations black-box in `.simple-workflow/scratch/` against an independent hand-coded spec oracle: **MR-FINITE** (parse-accepted overflow), **MR-ALPHABET** (the Unicode decimal-digit-property complement across the BMP **and** astral planes — generator names no script/codepoint), **MR-CANONICAL** (non-canonical accept), **MR-KEYFAITH** (a reserved/accessor/private-slot key derived by reflection over the type/prototype — generator names no key literal). A divergence is force-FAILed only under a two-tier oracle-authoritative gate (otherwise advisory `[MEDIUM]`, fail-open where no runnable artifact exists). One unconditional `## Accept-set sweep` line per inspected boundary is persisted to `eval-round-{n}.md` (`boundary= triggered= ran= astral= corpus-size= divergences= authoritative= caveat=`). A worked copyable shape lives in `skills/impl/references/accept-set-conformance-harness.md`; committed proof prototypes in `design-oracles/aasc-accept-set/` and `design-oracles/aasc-keyfaith/` (verified `node` + `python3`). Guarded by **CT-AASC-1..14**. +- **Per-AC deterministic AASC trigger + `constraints.accept_set_conformance` kill switch.** `/impl` Step 15 computes, per AC, whether the boundary advertises strict/canonical/lossless/limit (lexical) OR is a shared-input sibling (a keyed-structure-from-untrusted-input always triggers the K axis), inlines `Accept-set conformance: {auto|off} triggered-on={ids}` into the evaluator spawn, and emits `[ACCEPT-SET-TRIGGER]` — so the evaluator never re-decides whether to run the sweep (removing the run-to-run recognition variance). The per-brief `constraints.accept_set_conformance` field is documented symmetrically across all three spawner surfaces (`policy-template.md`, `autopilot-policy-reference.md`, `ac-evaluator-orchestration.md`); **CT-AASC-14**. +- **AASC determinism hook (`hooks/accept-set-verify.sh`).** A recognition-independent `PostToolUse(Write|Edit)` gate that reads the persisted `## Accept-set sweep` line and applies the lens's own self-incrimination rule with zero model recall: a triggered boundary not run (P1), an A/U-axis sweep that skipped the astral complement (P2), or an authoritative divergence not driven to FAIL (P4) emits a `decision:block`; a thin A/U corpus (P3) is advisory-only. Fail-OPEN (exit code always 0; jq-missing / non-eval path / skeleton / `n/a` all pass). Env knobs `SW_ACCEPT_SET_CONFORMANCE_MODE` + `SW_AASC_CORPUS_FLOOR`. Verified by `tests/test-accept-set-verify.sh` (**32/32**) and registered via **CT-AASC-13**. +- **Product/language/domain agnosticism codification.** `CLAUDE.md` gains the **(A) user-product / (B) harness-own substrate line**, the *agnosticism must never lower quality* (meet-or-beat) rule, and the HARD-LINE-vs-JUDGMENT enforcement boundary. **CT-DECONTAM-1** is a product-instance recidivism guard over the 14-file normative set (denylist = product instances only; abstract failure-class names + bare domain vocabulary are deliberately kept), and the normative content was de-contaminated of product-specific cues. +- **Cross-ticket `shared_input_boundary` sibling-guard (P-A).** The planner / ticket-evaluator forward a shared-input-class signal so a delegating sibling's boundary is recognized (it triggers the accept-set sweep even with no lexical strict/canonical word present). +- **Safety / state-machinery hardening (P0 batch).** New `hooks/pre-bash-contract-guard.sh` (Bash-mediated state-mutation guard, `SW_BASH_STATE_GUARD_MODE`); jq-missing (`SW_SAFETY_JQ_MISSING_MODE`) and HOOK_OWNED_FIELDS (`SW_STATE_FIELD_GUARD_MODE`) guards across `pre-bash`/`pre-write`/`pre-edit-safety`; `hooks/lib/parse-state-file.sh` element-scoped state parsers; `autopilot-continue` loop-guard de-pollution + `post-ship-state-auto-compact` Gate 5.5 integrity self-heal (`SW_POST_SHIP_INTEGRITY`). New suites `tests/test-pre-bash-contract-guard.sh`, `tests/test-state-parsers.sh`, `tests/test-autopilot-continue.sh` + safety-guard additions. + +### Changed + +- **AASC determinism hook promoted to enforce (`on`) by default.** After dogfood51/52 (14 real conformant eval reports → 0 false-trips) + a live `decision:block` de-risk (dogfood53: the block surfaced cleanly, the model handled it gracefully without thrash and was not pressured into fabricating a conformant line), the `SW_ACCEPT_SET_CONFORMANCE_MODE` default flipped `metric-only` → `on`. Set `metric-only` to observe-only or `off` to disable. Non-breaking: this is the initial default of a new feature with a kill switch, not a change to any prior released behaviour. + +### Fixed + +- **AASC hook robustness (dogfood51/52 confirmation + pre-release audit).** The `## Accept-set sweep` header is now matched at any hash depth (`#{1,6}`) and case-insensitively (was `## `-only / case-sensitive, which let a mis-leveled / mis-cased header skip a whole report); fields parse whitespace-bounded (tab-separated lines no longer dodge); the line selector is order-independent; an off-grammar boundary label emits a stderr WARN (not a block). The **P3 corpus floor was demoted from blocking to advisory** — corpus-size is a weak depth proxy and flooring it false-tripped legitimately-thin-but-conformant sweeps; the astral check (P2) is the real A/U depth gate. +- **EC-taxonomy uniformity.** `evidence-channels.md` no longer carries the stale "MR-KEYFAITH is ASSUMED / advisory-only" posture (folded into the same two-tier oracle-authoritative FAIL gate as the other relations, matching the `ac-evaluator` twins + harness doc); **CT-AASC-10** now also scans `evidence-channels.md` so the sibling-artifact uniformity rule is mechanized. + +### Verification + +- `bash tests/test-skill-contracts.sh` **852/852** (+ **CT-AASC-1..14**, **CT-DECONTAM-1**, **CT-EV-PANEL-ROBUST**, twin byte-identity **CT-EV-MODEL-1**); `bash tests/test-accept-set-verify.sh` **32/32**; `bash tests/test-path-consistency.sh` **144/144**; `shellcheck --severity=warning` clean on the new hook + tests; `ac-evaluator` / `ac-evaluator-hi` bodies byte-identical sans `name:` / `model:`. `plugin.json` `8.5.0` == newest CHANGELOG `[8.5.0]` (CT-MODE-14), real ISO date (CT-MODE-13). +- **Dogfood evidence.** dogfood52 (a leak-inviting strict-numeric + keyed + canonical/delegating subject built on the exact historically-failing traps) → the harness produced correct strict artifacts on every trap (impl explicitly avoided the `\d`-without-`re.ASCII` Unicode-digit trap), the AASC chain fired on all 3 tickets with genuinely-executed astral-inclusive sweeps and zero stand-downs, and an independent re-probe found 0 leaks; dogfood53 → a live `decision:block` on a fault-injected non-conformant report, handled gracefully. +- **Additive + kill-switched.** `constraints.accept_set_conformance: off` (or `SW_ACCEPT_SET_CONFORMANCE_MODE=off`) reverts byte-for-byte to the pre-v8.5.0 read-only strictness reasoning; the determinism hook is fail-OPEN (exit code always 0) and structurally cannot remove a catch the prior harness had. The safety/state hardening guards ship at their documented defaults with `SW_*_MODE` kill switches. + ## [8.4.2] — 2026-06-11 **TL;DR.** Fixes a manual-mode dead-end on the `/autopilot` path. A brief created with `chain: off` (manual mode) intentionally never receives a per-ticket `autopilot-policy.yaml` (Step W-8 skips propagation), yet `/autopilot` Phase 1 step 3 used to `[WARN] ... only brief-level policy is in effect` and continue — after which the three per-ticket Policy guards (which have no brief-level fallback) aborted every ticket. `/autopilot` on a manual brief now hard-stops once at the entry with an actionable re-propagation directive, and `/brief`'s manual-flow guidance names the prerequisite before advertising the autopilot switch. Surfaced by the follow-up #2 live `/autopilot` validation; the original "`/create-ticket` policy-copy is broken" framing was a non-bug (W-8's manual skip is spec-correct and `[POLICY-PROPAGATION] skipped: brief mode=manual`-pinned) — the real defect was the downstream WARN-and-continue that stranded the run.
  • @%|Gm zAyUVKQNBvzgibv@YCIkBB`Rv@#}A(|0$DyjEq{MfU1grZs2eTUC~HSbiEpD=SXr$t zgYa%Div!)H;Q1tC_bi&rp~>TH?U|+ifq}+Y5?UI!!)9ROw}c`B0z2BQfX_o-!O)Nf zpvkhavevKyn_e6!KrFDau&^*Qj{;$7Y2jd6dcynY9lf!JVE3Tv;u5UV9Lr!250}b{ za&GGvqbSYDRw8D)U_APkvs*2Lm)F-X^Qj*sTgJr7tX{~vp}Jbv9I2!fGNPqLD;;ya zcV;0iMslxl%jbWfDC}9Q()AY0YVSa)Rc(dTOz`SF3U)aDFUmD)P|4HxEc+7 zek9Y`eM+{vr)TOr-bm#B0UL1Pa|MD{8II&OPSj zl#XTiDK~ItSa$L*nckhHiWFnwrJ`n?ZIy>1PK73`jyz;YC z#%uSDW62t&`ozSUIk!Emk&=g;6o*!u*ZU*rtuEw zg2KY@Ax+ZH4_6^oa&N_Bdv9Ylc~67^mlv%=B9VzY3TaPkNkX_B3kHh)YU)OgooXvb zk5|?wo7!nS&2776)?VG+&|uLLMJo{;;H4mTu^Kh(q^S`_PPRZRZU40R8!*zR zg8u2QOFHj01`AC`T&9~%2W=_%Epi)EWCQ5g?>kv{4;D+;*3=x8kHvbA3>TVu1_pW{ zkxgte{K+bGfejp{BMI0G!xdKBpk;xnVZ6?d;*o9sS5^iFr>34oZz)AO1yt^0q3OOf zEv<-&2~s{(N%TiNX)Q2N5kHFcwY8W1)r@IY(_km)vX|?gJw)IsmdPOG^aC?G9)sey zK3yp*EBkfk5D&qB`Oh>EB13c+`LA|lAS6UYJa4k4(2q1XHEEZcd6euuLh!}qipZ76 zGim#^{P^*Zo!!f~Tw9;$FB~(g6J@kS7_HJ2x_(c&u(}Frc~6g$eELI1#>2JAv`-$M zxjxgl;991k*$mY_o*B(H_aQ<-7+|Tb%l?*Tw6ja&(%iS#9!5s9nr}|yT)CnP>O3w* zh2><%*s$A?=5Ud}^I0g@l?Un)%&0^t)3o07M~XugFbT*+;}XY?AMbQ#AMS6O_M)=l zCbwy-cJX33#eVaRJ;?r?2>8LfRgI;yCug7$rvmNu53@}}* z$sWJ@Vl^!Qi_d}yNgw%CD5LAkLOa6T5C^JssqPKSxa@5#v}ql2PEAdXRJiQ7#osPk z9zrk`f-V8y9DU{t^e#6q5AeZ@%|~C?jFq8`gXxejOZD~j4|h75c}p%h*?(1637dut zv~s6ql|G9}lk6Z6_P|WVzrL{mikgT>(*+VlFJ`M8{+F#1RPv&O=SzMAd}sYmVub5^7i&dX_U_mHi!fhd?Oi}!psv` zm30i{kl~j3X9MfbG?r{q-e%J9<`HR9oNb^r%zyd2aA%z+Jw4g5_Dowoun!(ilRDa1 zrXFjdI0G)O4rOhJ{ zCe3Dkz{;wYXM0#+(hG|cG@R3C4gmLBLR9n)7xoL%bj5)z^-ylRC8&KXOAAKB@XR!s zWv!HyyQ$KiCNd|E6)cSLR=~9Sd+WwRzf1K_eX#P>H1W%!{C7&{^L;BSDtvtbnrr@{ z=C!oWg;axqJ{5HAMIh;Q%MW#EUl5qL3BU?18_Dam&1-*knevyRiLU937hwSb4u^HV z-#z{5@AjOIkb7FGdG)+Pn!wU~b%lKh+L`TyP_`afEf|KIG;|Na#CAqB?& zf|8tnoVb{-rk%pXzMS+O4Hfg2B2 zAWI;I%1S1KZ5By329V72^Ya%sn?^=j>IacI3x#6z-AV<;-t_G-*~&ye0h*6EV&-B` z`d(%p$#V30OVSMFrub$n&a*Q{6RR>G(JhjZEwF1|!}P?x0~{^_@4)zW0e7azWILv; z>|pQZU1H+t=@^%R{{D11ctb`};ib#m0kN_CdMi}%t`;mWGKyd9ItrX5o?|I`ft%(b zA4vEkUo5P6$zF7&UAuVEYq}+xcrG+PK3(t zsolifhb3?b9&!N>U1Q^pRGDl)jM6<^;$k@8vzUD8FEf#+7m&sH4RQpkIIm_xAmJ_{`9ZgR$07Yp@h9jkI@l-C^WC94h|t>63@f zyL!Kylk@YprQQ1eG4o!<8_qHzrld4yU}$>trrK$HiJZ%M14Q*PGm!JAe!AuYHq~JA zD3~BWFzjzE^=E6x&de~l9Tnsz42K}_rqjk!m3HZ%)a1@r7La9Q8ILT7zOsNt4)z(4 z(u-GCM!#A#rFZ^rq}{9@G6d@Yzxsg?$ahrOV9&0q(p1lXWny4(7yGHPnwoW2@Zkkq z14BdQjcY;Wb6wrItl?KFEK=Mm`M~0`y;O^BlfC8>ALwt_8Z!)X4oJE!(f&NIsFKtu z#fvjuB6BGx*Z7r_l9Le*>>0?GU=80%4rL)iR8=w}a!ZcyondVF;>5(x@xrhjl<7KC zzgm9AZv^R{@R#7JQ;<0?zfYG>KgCM+@$zceS=GJIc)zAQ!wdxyh2z?U z5tHXbqmDF%`mII;_@3ZDm^*~qaiEQ%uI@NXq6p~iOZ|DvZNC#aqdWWh(m)`hrlvMB z%C3Cb-PuVFcICjpM9Tu(MTo^$)|I;C|yCXB5TN^|YyktV^7 z-YQSEZO3ZT_crHx(#O+Du5vvFkiMeoGG61asHOQ)_Z}rBUy@xggEOkG zg+@Hecs0*;=T5$9q!J&WjW;dTPoZ&PS72Y)LmBV?jC^FGV`P+LySR6t#ctDSHr z#KFOlj^&J0cy4Kqn&XLGFN=B;s^GELm}lG)UD{SCWnv!71>+^VMe>M)!`8~G+-e&Y zhHE?|9n@vyJ6Du&aC8!oge5BkJ^*W@(F)(>ceNfDu7R1+d1EFgI@+|CDOy8=e$rAD zNzBs6f1G)_@>qbW^-EFF@?ffRb3`}nF4oP5tSl@y*&N?yWi_LYx5#)&!kRe2Wk_>f zXfCBBN8e`(wi4itaoe6BDzOoPS_!6ujlK1yuwdqohN-Zhrb?49EWC{6b1BrFMwQwv zlaSm1iNEMYdnN)&^!$d8^`B(IpjRM z7JTiyCmFx1Wqph0*b$iXGZoXv76hWhzguZNggSXjKF(sLTf^qwZ^PG`4aQk_^>$e-{}#-n%! zz6_eXcSm3#+SluTO7>SamimR>!m|-FCUvb81JmmKWx z=XKmrx%zgl8%eiSMiiwm_@lfyW8JxB-SU!_G|n7DYlfG4>Is@nCu|b6@vg zTU+}io;hH_U z>)NYFU37JI!u=Gtg2nY%%O~`TA)r`;$&E#4(Bq{@G8-HFB6xOueK-B0OZ_PM!=1#U zqNC0}vENWxMHGB4vLi3nsMw1wfWgIn^C>7O->6e5R6N+YD-D%MwYjzd?mzXMvE|fO z0&OB%8k*%nH(C1NLRcQIhb0->8?ihNdmu)St$E?68uy|Q$+qcW7Ozli|RpG8`*N@C18p#wjzG> z#!~WhE`p~w%rGn6p&?t^b!}CynS0E5sI>RaO`qsF;1AvJ$Fzq#!=+2R4ADnUIi( ztk@YpU#yWPUn?XcLPBJ_E<{;Cud||*=veUe>yDH8(X2;?Mg)?p)zF41)qS!nv!W|K zqSLUYJ7aQbTtVdK)jj)OfIP>)5WytMeJy<#KgpG$v3L28uq26%-F=|9kHTca;he+j&B zm=_Q!bGiN20m@FspeQ?h!*<>GW@{9ub zH(kn02&-{n6-8@nsAEuQIvD=>vyQIr;*84gj%0?0hK6&_+Hw`HZ@P?xcK3KsV}!&{ z7f(^U%h$BE0T581O6{kxjIl9-elck<1$>T*(n$47g^dX-uy)9aG2-1@4eh+G(XKAV zNi&$+sw!%BlO8Zu*K120S{=PVun|+ld&DaLQtr@z2mg$V3)CIa#xY4JAkXScpzTx` z4hsuQDv1bKy;b^IG?zc`^%I~MCCsx*VYmrXR~apHTBZamfaAO z-*oZt5ai)82Bq+sFyHEyt1h}Y&d=uN61#bMSS(~qb|c;iCq`ySi>7m27-I*w0K&?M*avdg4*OtGr>Y45_#6O+oPuZ;h$X(LlZxL{`|;nAeZegWkl^+X9SqR=oQms z6NL-vd=GHR`7(wUE01j{d2O9H(tg8QJ2)VTdTc=-YL!yHQ>eVTKNLhD)MsFvFrymA zm=o$%tU6T<8a)G37M5;>m$}RFk%zY1{_WOir>&V3Br-67I$ODSyQ8+LNU@Gqaorb~ zl2vwrv!Cf}!Etw<8%6H-MMq(l^~?urA<|| zw$07WciuWE{wk-fJvF67)2bWz`E$0$#p|>_84C4z+M^>|xLX{EV*LG!bhreA1=r?hJ5#|^KuG^s&v8C;u6xtQF53bo0<;70RHwAYRJxXNR_-rmmAo9&6nnp4XIq4Ba$qR1IG z)`@rB(jefyTXR1l3bGfpA7b4T0wT<$@fGUla9ht%_0k9Hv#P$kge&;|3M)rT4sigm zy-+JdsfZohWN|`$R$er0y{`>W9s)O?!^f=iN3Aiu{I7n+Nv8B7?ff-_bzsLqQh~=I zsrG&hzZ(GDT_NeK%!ouv-eqHFHyTVqz>wd9_2{tn5E$>;BoeI75H*ypRSsb{74P0T zMD{R7au@{}eQ4tGx?S7fr!qfBZxARh)B5$*?*v79a+tNnfh9n{#+a)K!NhzpIi#AU zR&donH#Zkt(SpXt1C{fS-oJet!{^ddU0o(IEzKFtp(CPs5gN6Q6Quq1ReMiQ zifZ27+1Z;QF8LI5Hl+)Lg5Y5ibsi~{; zyHNz&oUXo=Ag%l3S)MrEkMhQHb|R(lZin}2R;B3eF%t5|Ly+dWSZ9h9gm#z@mt^e> zesJ2BmzOUugW5u3Z3RPh#Ed)Zs)tSOU!zF6LL(5jxvaJ_73mlI6HQW9h1T~=h4XsC zvJ*~bir_4IrZjDr`=`g`8>*^YH)gJlg(M|SG%2Iy3BA(e@%jK_CXKbNEk~1~7u}1k zG5q`%Yu1IHWW2URot=r|`oxvzaipVuy2iDWK7TZ68E>gi-0i!MM`mr4H8!L2eB#IR zMqgOx^N(I$54Bqunw*$;p{vX5-1k@a8MNQs^$aQ{jF`X2%fGz0F0&z=lF|ysLSE?wX}Y1QPN`To@nk3>18N zDHFMw<%1TW3wW40?SNLj=*jd-)O}~t`(_+bXXJduGdI<&4)l>VSX)nD-)6lQG2xJX z35gOSjE)AsK#i+ntzdNBr(lENgw^uKJa!`S@NUpthM0UKm3|i{e`;&{c%@j8zSv*Mo?g~jiKecC{)jK?TD zNxm?<`iaORP}L6Bm094D2lcTMc$A!Ig2~RlxKzH9+!Rt@Q!{1xqfSa4riS?1>H~Im zc3$4Y-SxEbdYPl6{a7zAul}XjfPfsM^`4Jc9KeB;b)PYB7z&?HO=YRKw6wf`{~j~$ zV8&PgEmkIm2iBjAq$HFnI9lB157NFxd*{x<);^^tF8MV(QBlz=IOR~zanxy>{70|U zhmX#dzrMwTn7OfW#bSwRwQyn3?iWxUBO@a*v4(5c@a&dHO0D}XEzY(RF-9n7&X9pb zIFTM2U??u$m?EVl%Dd ze*Q*SSl^)C()opfauCCxT-DIj#tjLZE~n4jr^-+&AMnAo$}VLfWVay^{D+pQsOY!k zv1d47HpO7b_3PJ{!F{0I(O36CQ*(a~ISFSG$ z{u=Qex*GRt)d3ySF0h&i6@c}a7hr~pmLH~R%Y1Iqcqj1Mp$nz|@@1KJ;*t*5B_9CX z2UmdS)}o~3M`n#OQLYnbf8(Pms(M6+co11)2TRcS0b<+ojUyp1h1G1LAH2tPdI zHJI-(pVF)@QG!W5z{0A1OYtXI44wsBEEOhd9Mewz2O=C6l0P#3+-FQO+{p`MS!bS{ zd?orfl%;-pavuJLnEaD^<(M;SZz1-3YKXV&s|yxZkkdgOCN&~1s-1E6bP!JA5mKTA zTY&ERS3BMD!g5TX;=Z0+8vb#TLJ>z6_oo6gx-kfd$38`Xt?PFROSWRQ6l3~!U-N_) z+`aJ}P@GM_n`7eHu^MrpKj(z%fnqi?xSqs<%Q9WNdivg5v$M`l*jNI)iF^CeOAsp# zM-XiZjV2bBz6wk|EF`8`c^HQTAuenJI`!l3q37s(YCpmtU798pw8LZGgP?a=zO*AX zT5`-##T~$y$;y6Yzl0^=Q2iqTeLsBaS$Kf|b`k?b-{{MwXpe3Dxw}jU_bHYTD`ouJ ze65KxlZDSItb5J5Q0AlK3FgU0meWrQp81hwmNb&BxpUo&|1bjc6U3SHr?=+lhL87a zGFhPId-xw9t{;xJ^KjaGrBvuM%tYf^%agY9FM+IotER|T;O5%yQ1<2Rx7yAeiLd@d zqhQ6!ie8?62m||(VTi~7j}rvzUI7d6C_!RB!q$q>MDKXOp!$XE%uAe-kK+LBMJfivIsyrjA~>hYgD9s>RZw9k0w&B+OYU4efq*#7)B%oxWcVk&oGN2Zc2n!2R;QFpgi^bro@Fa21U$U7;}sOU5C-uQYPvC{R)wj z^daM0RQK6tsoJT~_uu0u)AzmDaFTB%b@r`375N>^i?D2Tp0b`a=~>g&q1A>PaQgxh zHL#aWB<{i``ViAyheiT?)|0%82|xEQ1n+!KR!ZE>Kaa*fq})%q7l4cIuzMY=Z{_F3 zpG)ZXVqH7++^FVck9?!W;0@e^2}(ZgHiStpb3VzD8haw3GS_yJ0=2_~u`UaFx__By z|8puIbE+1`$2$IGxvivQp7$m=g&8``yU_GPqJ1afWa8c5C>*}5jly{GKN0@hZPpSc zmv2EwiLI?jPDkg6HO`^FiM!URGAtHK+H<$7XD-97LfaTeF{o!qQsg+%o%L z8XMeY@(1WHv@ySD%ISr(rcyNNAaax}|P z>dDp5*YVAVziM^Vp6qhCOQ0d~!gB|utdvp|D#2Uu4O41rDnk+XW3Gbbj>HgUa_$Qv zX9T}@1qDsF#*E;WS}gpkV59YGm|W9nF?w#)UA`=!T`AmCXzR7QO8rFH_T}EAow-TL z(!(5sy!7z!uRJN*+dDgtpIqJ0%MFgS^CFd@;4WK1ayF|KnT({A`yeA<$G7Lv224wn zkLE7LrcJlLmCuwy3j31oy&QE|IjE(wv7PD2d6zA-=&Qb^fm0G=gGu5;e_veKwX4Rp zI|)zd$9*`A`u7&M`MLrdg48!~u8@&I5Lz?|hlz#Wag6qqTcColN>iuP*afzazEU*^ z-pf9FzL7m9U3$BpW9>})!?JS$XnZ!dIcxAsj-`*wxq4~dy@%$5zxO%WJhJtq$^IEG z*?Tv16ie??S=*-bJRi8yZT%q7AZu`wl#4Z0dGy%YkCj~Uv*?}gbrs{kW`eSFcR5}p zMc~rkB#m_DnI_%8vG(z2h2wwLrTb?g0TnaQW0a7yP+#3rUcPTr)g1!YZwFWAnEG_|$eOSM`$Hm?t25%k<%*f@*|ANvLn zuQM|<56#-Sv}^HwEMByt8WKIP%=fSEGxH(*?i>I0;_=#|9ec@(e-_BZYii+tnGfT; zkZRvG?{*TOrQR6m-pGGwk(g*DWI@fyxcFaNzarx(~=;`qHVQx2b3Rk4k=VPlhMP@E%%LF<Y%f|^n{0Vy*WjB9IUJ#ePq76OuPPCwUUY9Yc)DnVmyf8K#>v> z<~esyh4p>qp*=~bLw~`&CuiSIDoNpGXX0O_-#>sMY&mY`Us*ZwF_iJtDvbyV+ZkR6 zcZjh%UW(2@+L^th3zd?TT34@TJU&V+At55UZoR8x%4}}Y*8!VL{0>#-+!X50nakfcNZcO{zvw3Nm`;W}kvW><|+F2|Zl+3-nTpUiy9H4t5&Um`o5~&n& z5&PVe$5sbn+JRGJxyc1Kp<0I}8*`yCF|PB%Gs#wlGGv_g+gr^VEe^|DjNRQeXN4|2 z3qYZ?D!fBuLTu;jnqJEUqqIxu&%gDaz0QCj5`VhSA$8|^!&dYK55e!B0~MsCd?Ptf z^YfZWSKd~LP}CbJwh)XZY9;~m280jOaB&qryYx>bjZe%lK!HG=Y__4aOH$IEQS9QB zA=iy>BaS$v`|PFxM$;MWL&%<2%e*gUCf5y*_jcXzDBl`74ZKw*zbZ6qG~1}}wV@x% z%}#UYPEu+mp9TTprsEA6U3~obFT35@ofW2mPQR}mF+7^g_kZ`!NKH-c)l73ujULz^ z6Lsy*k_}yZ^3i^z;rdMeG~m(@mID_r_e z@$IU3^>)Y92n-@g-sm=eY}-4nLLaBKAI?%`u&H&J^%lP@pyq{2>5Pwz$Cr2;cL zs@vFlvGX{wU)yDSJr;P;m~F9!>$>BQm}vE2r<6OX1cIDS8Xh#9 z3f;R1s}Fya;yNj5rEYK4%Dz8XnS6b5=J&cdSXjLM{Cs_VTOEIloT)c~M9jPrlV%cB z6*UdpefqyU;J$~RpKWFQtLOD^Ca+T-^PlrdQja}#-RsVv?(#^&ow*#S8Xz~WQ= zDTjf@_l3QPpExL*p6N`Li=lwhy689n{Of@L=lN=3r`Xfql5B0`pw?tWYpJCL*Hrz{ z$hB8r?3@0Pmp<`dSCDXe!i`bPjOQy$?ERWGV{5mAnoi{nUY?AIku0=aZ>o|A4E!v- zv82&KgBE>d`D`M})r-rX%hz6K#55Je)$y6>@6iStH1_=;#VUa`=REp~WrENt>exR% zRrHDXH~!f_==w3#=yRAOPALDy2f3iHASS(zRu8rQ1K$PL@<~p`tA+h*VPQ?4L4&sc zeV~={zyC(#X#9tQ_2=S$d)vS1ZV3!8eE$z??;Y0Uw(Se+vY;Y}1yK;N0-}I)>7pWv z6zNhUAiYWNprRrmpwfGjUPA9Aq7w_bi0Kk<(e9Sazgt20umAK%{x6jD|AMFd>($$9JMM^vMMl=vF()S_S#>|@ zFfyBX6yMF%bO4&*gg;-e&9C$R3@;l_+-Mf9PC(?+lQ*r-56*0RoBK|BWDm5LOL{?R zVPTYtoIL+U;V0gADod;MA#0O^5OQ|5)NRFjDHcdQ++!xDTKoq_?cN%-QeeO_hTKdY znIo)0;^>`9_on8Z??Vx(1G;9qg3jN9q=Fm9CyuQ60SDPU81CKXe+Ob6b`!FhHp={Qj9G8xH<4=8W(bMIIZ#V6JPmL&7S z&h@2rRxWxiEgikvJEGK9^Q~Qq>J9AJzBD}*=3bW)hq$78q97$ZJG-zjsjyK0`(Z3w#D+}llJbLhQODWi`GJ)&6`a~Ny(QsqguM9z;eaJ$?1mkop*!p0|IW$ zgFP$;>JaG2ikEh%|(LpbLukKo65q$1#91S4m;nvx14QZkc3p+Pdc6v9IROUwZ*CFxgw!-<3uS7I8 zqjdGgPS6XKzF5lZ=~;ix*kA0B63!@l+j?$w+!*01yfeSwt^9re3A|e3?Ulvrm*V+t z%3jnRv)2+VJXYyGyWIIvnnO8F(|GtLgEj*%SWzwB4DK4vPx^+w?n0{RK8p*JHEYzs zFo?KcZWg~iwK6k$No4bbtejk|C}BQ?jrMv=zEPE?IMwdDDIvt18E3IMCHiVK!8Reh^X zUa$1Qhh5oum2q6YuCAj|n4Nv?!D8W{P?4svi+c29qbKO*_m?V7Ix~|~Qe4)yJ0;NT zhJE6Nm%KHiqAxt4!1w383W&~9cD<|na5{^vf9>F$=+)30wbKo0x%whvcJ3rY19q^*sK zxBRJy6o&vxJK@2s%tj2Ro$s^fnEGLA!mQ~7t5y6g0+Td{=$8RyT_YLXw- zSniJKDOpE{?l`V(2j}7&S%6McIy5>q5jvzgFJ|jHkh-7XD$>*_4fkTd!>vW6{%nHY zneND~#CuIQ6oRMne^ggHZik7RYw#B36#*ksM0z&-ImvWvR9m#GBW>ZeaHrStInJHR zTyl4H+NE38xbj3$`&tYgB@G8!F1(dYb*jWE$%sdkMbxF+_#R72?cLSP*f8ZJ7Nv+H z7y~3$#Q6ERD$btb)2W}5m*>PW(p@-}9LCi9fKvfr)V-fyosWvIfjh#DbMQy&9nIkI z*+QefIJL1&jA)F*;^HGKJtDigXe8$&RiZw3PR=dUz7lOrEuqW2XM;dQr^ht))sI?| z7;oI}@y=M_9YB$AV`+@dD}-zj*M}SvqLnVTsS2f|(@TuhUAYl6{TYEutb>J9FOui| zXuEcdHV;k^oIA2P9oEQ(Nb4F^L-JH_%83lswKb|p_1?zDt4vJU(lU1(<5`+5&CIx_ zyd^Hf>*=UY3}!kWnuRU)+@xM6%Wle9N==UTa6khb`1kB;kE+ zJbXv)Im@^?6j&EJVKxb~&XWuUN@<#HqyT)Qw2U??I^5XPS(^gqw6WQ-yBrzIi|TnD zRb+K<2#=15-J#i}g zIl+q-PL}PdC-1qSMGIqMB2BOHcS}KacK)`R^WJd9`l7_D{DIC)k8p7`H=;X3w)4!F z%?@FeXbmM>31zg7(ZHG#uf53+)+v98pNr?V-DG=f8-9y-cCd6RjF)5)Ds>If6mDT*!0K-dF2Ltn zT7zFt8qwA`0c%Ly35d(-V?KI`f4Nbfh#>(l3BR7cA3+WjP5I@SV>I_tVNvMcZ*V6Mwr2- zZzCp71*B0%SzB!_Zs)q?b@UoFU{u!wYo}+ZWfd6gS7Pp8PE%1{@-zRGms`Zc$Hy9U z^a#i$UL#qUF5a|lW)BXYiTmuIZ4rA3S!a`wtb>p$55$Z=Qyard4m|CoFaYU z+L3RyY$Uq{fm%4ujw*_JY|c4Fs`%Lm;07JuMTSSr37zY489sdG=G z>Y!sTvopS8B-Lan!CPF%Y?L-jVO-CCwiobJv-6uU@xV)mOcMt|J-K`qnq} z=Y%!f(9uFgPtaxL%StqWSgf!1K8|+rH}0|@eset*aM6svH>GsBXuZw~2??bRSKbc; z{V{^j&Q>gL$q@+pQ|y}2wZbKAY+i;Av}}yL-It8p9O20PHffp znjdQ;o{Jo!5rPS-Da2YzA*VV0?v|JxvKw0o`n=Xp8DSE+;ZR#Cg2Uf&{Wd66)_<;y zF*P?<#%eav`W#-HYA-Cd7<&9j#*Kk`hZw=ue_-v#a#1pY7p34QCj{HIo?hbD(^JXr zw~10ujC6I|F)1x1?fi)bOKOoQEW=jbgK9-PGvb4n9ch)9?fV!O^R}K5X-*E;cSd$) z4=s)V$uO$?|(^-28RB*@4Y+Cq{3N7=@}T zz7{5j<;8c3h%QIL(ZEUxD&WY<)cPaj0jfljPs$;vMS!IvX7o#s|cyRFH!a zAtA|SJA=fjb)LB*cMLn+w&+bC*J(MD-TCvD(z^xLgkS}bfLs_*%fx~`N(kgtifBZ{W>R?Nb@O}SCY`aTMSj? zntxZfN_-U`f9@C#2daMJvgxL>$1Ve)w$|3m-^qwH9{e1Hntg6-)E92t){iZcO8WeO z!u6o|y5S&S=lluA2L>jp;lj@Hk~X3)NJX!+T`FfsYt?LMHsQ}5=coy?j%ZsiV2iv_ zdqk^P$1s`kJ4oVXA3d^48&_&8eXVPU{{)L})2=e}W>XFQ2fyQyyr9##G*r0tu|$6@ zl(b^pGoOM`eeUe5;qdK{IOM>G`%i^Nv>bzs7A8O3vDZ0f6LitxF_IFNJrx<#>B9?^ zWTD6k&d%xJxF_ON*4`~ETdRsgm5cB5r;w=@CsV|gccaqP1|vi|gEgQU3UFPP_MBBt zF*&B-hP#k4$;RrFFj=f))VikRwz+gaP05*OQQFn@?jf>rHE!k%8>KF;EywP&Q?0*& zisiQgM;e$7nO!7KoxKo(pOfQ{kek#Ipb>hY%(J$)>bor*i|n&Z>!T*X3mn|=>(E>?#x4EB+~6~Az? zx#!1|%b$KsSh}J$r;Fx=7rVmtCrYmNR@mX2G>AO0FBf(91FD&km#yjQmcc0II(XdH z)(+F&K6m5x&*vQI?wH+;fvEb8i^7o^5G=&atL#c1Yq#B!A>Qp`*OGg8M>P|%xRcVE zp}b+zyh>x^FepIlXn=pE2iqq3p}1aSKfmMjb1*mZ>H1EJz`SB_&4#w)eOuePwy)e- z>O5xM$uoTfp@ZT^gXy^tR&9m5+m&o#s;Asr)BE!$HYq`|iPi$E?XzHdD(#(^x{2rw zP{Kuqoilv?T(e=h=jWM(GZxhEJ)Xv~UJ`G6%M)r*wc)mzhKEHTUUXlw4i(0xz=7z@ z>Q&U58Mz{%YCw^#8l8UqAz{KPbF(;=#V2CuUA%aI!}D2xH=9W|TnDNqG=Io)Fs}_d zEpC~fw0fiy<3z_hE)fwM8;qd#!s)sb^n9r)hV!&~L*bvmkv+Nf8;jY)@(p z%D(UD`*>*%+_fr^x2m|G#Fs@IaK0De8NO{DKbimSn1rQBH?6XdF}Ye#4onCK zD3i`oOUaY>z|bR?bl3y;s+tMw4Sy}N2%hx*w0pj3fs(Q4b6=Xjq`MeFKUC1wb$^%dq8D;g zPf>y?$k#SFmnuJm^|UJ6 zDzS_L=iG^$)z{IPoE_tw$|pjl;lHWRvThtKa3BBbw8da^BHi?eUW%^nSViT){Ja?e z*}&92l9CdAu~=g5^=hZgoyWYw(dI64sEmfeiiq|6*cxf)CQ|1=hg`Bt+sJ$2WWRsjWl&ux6?hAt&$mYH>G1S;)uJ6o%2&lH9ek=ZtnciD>6; zE9Bn==3$E1&s+D?(?LDzj%%zr+q8}ACS3jvAKpP3$=^u@@_l@S$f#nQ{UkAB)-Ok> zcVT5w{>!;AaCh9c+f2Yce(>%vKp(!C(xduM=6n~VLe!Y1$kB`=lQ4$JbN(RJc4;9Sz<{Qa?Va&-@ zKA2p|em77mY4U7Hn|w=6CvBm&>}+bd*NFuv9DTnpIdz+cp2lZ=ZJ_R7knG4Qn1KuAvESwd}89t5cW#_MNqU&&0G1P_2B#~+8}K`=1n-wY}Zg! zlYS5C=k*;)@Y8UGXFjm&jx)79J~FMHZ(^k)uA?O%kG4dmYj~zOU(!YjDhFajr#KF8 z@XUp{e6ki)@zhZIm|$RHd~My7lbwAR(<`>S)X)vGa`)x7H*$ug)ZJX&AE`@ML4LFM z)2eQ{ns>MKBw!O4kL+yPentr_^}JcS*Am;qXW3i;Kc`cuM_PM6?QqX?+rE%Gnj)TZKmqekxHkQWuPrI>Ylh(2H5}gXY^M@hU23LqaBZw(MsIatkB$ zA1WTzN>@sIuB&UdlW+o&d=dxTPP>wGGxZ_w`|X7`835CC{n?EYsrMvoW4r4gbP4~ud&3HwTlmnd=+IH#57dulXb8!O+ zmsw4I?y3trjNtO9NylEdCh27`Xmz?3s6P#Z-2g@}KvyQAbnEZS8Kerw4kq2B2x^Az zC0o)`f4K6XCXhDsW?7Pyv)s;(2yrStvp(n~5e;4X&!2Z70chFH1W1{%YD<5?47$vX zwWktdUy^Qg8AdQ9bfT^!~jl+m_kqz7k}tHe*Hh`e{ad4@BfuXFtTvPaka z!)7_vn#R*q$w_YyYRL~WFw$gHd@W9KU+*qsGZ(a@J~-0lH+%g$hu5xYU-~?wDU67< ze@xOzO4814~DT=_o#{4F=HZ>ZapAel5bg0?)K-#|3 z(riP}yeK3~Gxqc6(Wg}l#2UorrsI#*)y5`iXi*86fP7#L)}ptR4W-H*H`Ld6-aDgW zP*?^4JjJYVb|{cRTv=mswQOgBZWSs94Y~{n=h>+=dsX9$EeIbCag|?DTS_67fv|as zl1*&KF(ELq5^9JPNxvbQ7MmA2Y(Xwb;bx}!7v<2~d?)-e_7=TtN9jM`9tk)0ZjWt3 zK&Ptb88linX4gKrp4z5Y@$#p0=V=R!CW#H-1i(W0^XGMqB0O8!>%TGhI8EL6ZOhlU z-K$e<+<~`0q0X~n+SVvXNJ6+H>=wQ$i&L>9D8jc0qjF*~JzwMpp+Zhy$amNKn(o0z zp43Rl5#r4#cPDk$y}l^zY8lcK%alQOGT=L2^0tuj;&Q4LuJPK$+Eh!T$J51rX2!}J z{>Im(WMwzTkZ5L^bJwybu`bsI1SZrM3F-?_K4)fPL7@)}|j(4lOpV>7$mNJNGO6!dfb8|bOx+zDcV+8|WO7y)ur)D8-&y>NdKm)-i} zmC)yX9+F?Hmh`Cin}DJqT}?t=y$`WFi*++}1l<53!$ZZwV}1H3JkynDp3RV%Ok5F) z*6c$=PuDT+#FP&+n0&q182TDNUE8)q)BaV}M-{b1DLpmQ{FlEkx)5595cL~l{VzD< z^G;z{OpNH*3cfpA6Ykx``HB->{t+R|CXO)CMwS8lab6x;J%sy~P4)N7r0>6V%R$_* zL3E)GygC5m>3K7ehy#{49Cjjk7C(=_cYYv^4WWeQn_r3>lK!YwteFMmy zI8!A5*%@J9+S71Y^Pp0VmK;{zp?TXdDcMSr%*#5}e#4<-Gv;coC4tc z1lbI9WeOlD1>Jg2-_t#>QH7nul!q5U)1U14Q1koAs$agC z%I+TX^$B4o5u2m8?j0tij*glc8NJ}&u8MK1Q$hBAz7&cUb1KLWyqDzT?|>Jf;(-%G zcS0=kyTu?K=NDBrVmjzMXxOzhN*vX+7;7|xy}_o4R*m>s#7Dlo+F-fTT2jXAm_Bts z`gaFv!jRF-##)vTGKZ`I(a#XuQ?A*-pHNVFtnZd^pq=Q~GU|VP1RsUydq>xWZ=D|e z3&+cyiqF;mqSNgp$Re?0M?}Z4we<<>u1-AZ)B3W+o=!AqPwU!a$|R z&BfL1K{8A`&jmz*l>St@MQ~Tv3Gl|;ob%mR{~@I%;qY-cNJ*2O@8_|zwr&mmxhIWs zU*5(QYT&UhPui3IW=r?&t6<_RETAd4C(h)~QTAvIbkixClwpIY9NAyOjlN9G++h6# zMIdX4(J$e9T*s#n+rLksUj@q<#{Vb9@BbhV(D#J)?lb$JuO1{NNB)EH;*U7_8k6<- zvrc7$lD$v%onL+SBzW$b+>^=Bzevg0EC;W@v<3C6trs0dIfA>eN@Y@)$ z_v-uhHGyO5?|*}T{wJl$`?F2rKZIZZ-(4qhRfRq3# zS7PK`4{}x#Q_CpqYK`+koSn+Ome5H3v_To@e7l{`(sa<~f<g2Z>kXkne|W)fv{6tCEJ(X5Sg&t zr@IU_&CJyI%XR(>-+ZJdH5)k<)so`dpylGv(p>!az5^0#a01++dvx_wxU_+#p`N87 zCc)T~zMRrkaI5Y!n>3(ju)MM~_%^ND+JiIrk50UnX4*2V{qmXp&#E4#0BufzM5wkN z!+l|u?E2?iz+%G(pT{Q2g!*Us$KD2^*Q?R%kC6NE1E|y4n!yjRLWKm3s;s-={dx6H zY$OlvYy23rr)TAK>OcP7@UiSUTz>uB39q{VZ=eJYuz8`8{7H6Un}s~xtBo=AQt4N% zOMy||?U?aBo$Sg$N5>H?C0Jmpt?>5GbqR7=y?8UW`q8pGX(g5r=}<{pn69O8+w*l} zQNLT_r((a<1ebF*$X4Mp;#JLMnd5~-xqapCAIUS@muA8B0}%O2+*jfK>TCEMaWE;+f!9#l)~i*1SxBTGmUKmOy;q(Pd69Y{ic0?Z|v>HlfxKA>g?FTm&Ik z%o@DBWg|ZgsK+;pLBg6f=t-KoE2()?5r*r-+J%D|Gcz;VCAQ`ul3-(N^w=`a&THH# zlki1_S?jjG%cax zHALwMuvCUZpukd>2(Ax4OgTL=A+IR6)L6RH($_@8aVQIsU;XtCg6a*YrHsq!`lGJI z3gJOAifOehli-d5$hv&3itKfrT^kf0`lFJQI`P-H<;H=5YLA}|vi@tM=}=zA6q@p6 z;&(O%4nd%UXQk#p@x(D*jRoQ&$isvRS2q)nji#1#7xn*!ku{N$lG0A%)!Lmp(JV{J z@pxALJ0|hL*gF)rC`p|6{ql0Efd1&iG^MtU&e~e33!KZ9j}n2}+u77~cDBe49?-l| zXg>ISIOiuEMfIw zdCXfgt#*tVTZG^e#cP@ww^lxm1T9i~r`rbA|3ThQ7GL7EnBLmy<__YAOll?J{ygeg znw>mNf*DRpyr=^?v3&{?xBB6D{1>&SVahf(Fg$(vr{cr|Ui^GcRb?_tND2}OGGu5w z354v*=V_NiFfRoy({}?e$@SYWF!DP;yCTNOtr!^Ab9=)64@quKyHj{ED?$Ey8KX>W z-1bQj0qZTyoj{S6iU)lAitO^Qwm74GYqUMmmJ=i!6nxZl@GUyyf=i){bt0RkCJ0Fy4 zV$pI_;ydLaf>C~vvt@ymgx3VI7XzQO`k2a2pZ)n=z;pw_^#R(NT(=chW$~hA<%W%f z#6(Q8{uOa5=#{9X-v3gR>CcAv?XGX!0EQ5dDXsDoQ?uAEYt=?gmQN4u4_=t=bIC-k zh@Kvb+!1CqfHlm^5)fe-F%>xSo3|e*bt-=)N>Q%g?*=^rl*OUQH^7`0StO;BCmG1# z&ePGo)kfQ0nUftUIz~sAK}@Mgk|vW-NVBc~!s+Z>x---G#T%*k^pi9b9oNHaUw-Q$ zUn&H=%n`eV4E9HQhv+S;IajIEXE^B_$`RP{`lz<$*lSH9(6oAdJj2t%H`Y9*Ev817S1{dJ1yVjXb3^I(Vcb;C79~L4__}F`|vf| z@lHESnV3|6uN!J6?HCQ8zjx2m-aO(=SIyZsmC=N}YeT(#PmNvQStTBRnADCjuG0KI4fdU)Bx*B$V|YDFGIJ<$5*S zmZE96$zQ3640?VpOTaqH(ch#LM4hwx^)^i<~zB98C5Q(5804%)W6#!cK zQ@cIoq>`g}cWdH;o0T3L(PX1i`*%t3%iGdR$m!QzO;{yHWPyDgw(@Lc)^v{;$pGp^ z`sR(fN?Ce!7NP8>i1OAHo#JaAm7Fg}{*Z~KuDtgz+~#a?D0RIy4#h*d#vb4M>5_we z`V&A!tjD0x0CFR3fp4pU1X%AH26=-kda*0|g*er53T=aZ2_RR}L?y6%ZvRDAO3Qqx z>710Idv6)NW{|hMuw~;)Yp;PeR)yVofAnp;5$$zPG4~BAfjL7IEP%~UqRM@t-B~UQ zzVd$}k!f-KUqYIwJ?~`q=Wt_scl&LC&aX-OtO$t(IMrXvRG>F^hC`ppVPU;1ajTn6 zV_D0WhIbb*txUyDYG%-|yOTyXWy%j9kE}4S6P>WPTgbY9*|@!x-?Y|=RFxPlaNo34 zG5>C-2UqGCx>8a>5d%y?ULFrkG28)srV1Qa?x9SH@pmn$0azQo`{H2_2b#@ed0fp_ zdakx_8>WhdWmE*W7S$W5 zn*0yP^tuf9bjHnwukGDf$!u+Hxg76?T?Xmdn02LAYjZhsPo7{D66jO4w^FcAbzXnS zIrFT@%si8|97?y|awXezweL;+kJ|#}F1zX7`U?6~Zu;PlabZc)y@o$}ADt{cMCLW2 zHvC%Ctg0!Ti0KRVRoUhxVR}~rVufRodO+w@s}b3?D4SP-*jXmf6;}$ImMPf^6Ipi~ zD=$GXS#=fm0o9wgLmm+rAr*To6b(bX0rj|Sw7QCyCcB)pl>Y};=LwVPR^c~ZQA+rv`Es6nrnC&lD zMAauxMq4YGVzt12FV&4D;A)_K07nR#2otS=O3@n%a=J(zRsUi^-sluGUc_m z_ovM%0o&D%FKPKhPNwfcg!THOlAR4KdM@jyu{Kjk*TtXwElQ}%z^ZnY6u>I&4dT<5 zS3lq;5phjQx^a>Xm!FB{x|L>Q4 zH*c~M_4Jh7FDPxDe|+^HTKp#lt)4l;4fbzDtS(A+;;XOSoqS%~%Chq6f1(a$M}oRq zZ$-98uu9QIYT2jqfG#;8*^kEM!aFzuVQ?16A3y^QgO;1 zT;t0?su{g_20@M^A`l{U&vF2SzN(}<`T-(vMpWOg$z$c_mgqY}e>&0Nok$v<>C=g_%rt?(D}Jvigarb!UM0L}`1F{n6zoO?L;GEL2yptdfN=`ltR(!+Ba1 zrE_ORfvd97i0FArMj>iAuI48!EDhm3ajIxYU|oLYSw~)}48Y;|_!&318pMI8DB3oq zFBfj`G8=DfsQpGNUbcI`e8Q%0%kVyeSCiYElb84G)XHfzkw)>FRly_WX5`_ahVlQF z+*3y5)nQ6i>GM8abMu*JmN2)ur>R_kJ_)$IwUVmW7qJR0Jh&dz2AN`= zHaW^_X_;5Tke9Gv4*VR(P#$VBhQbU+QD=2R5^bl}ii7N;68EqSEOG@DmcWH!*MT54iw>IR3x7+JS(^v3YpFcF`QXwXMa$P;_>2J3oZgC`~NCL7H5l0GC3hJyf;yTilJ`s2;H zYpS1>Z9J|zAQyG|U_2sLHl28%>dnzHFF^Lpu~Ei%uU`z7g38l%Lh8qKu~@UEAdA1R zjqhoy&7Uu)dk`gsg*8l^Ox`p%Us3;~o5leMYr}`r{T_3z*3%yyi4ro8+$|B9Q|+>V|5gTd3iYnJouqv zjVb@E&g;y-zu6#TK;^@gST~HT=J?p?W@j5Rv)GtFFbZ0%?h~hiHaocF`&(ZhZ7E91 zA{Y+_cqk_ikI_KRLM+-fD}}h}O91ypOH{epvp5paQm$^oAb)}oQ;-1|x-Dm)OG#_~ zrc8CpdwlAxjXEC@5}u0-bDcewr>hQ>LEi5cf;4Weq@?trr)nBnKugi3a(-C`uv?y<^FiKMh8QxYKNs58Y<~D~oIux}7d)$| zpm5o@sU-4pe zXH7%*H@sxW3XHs8bKG3rfMd%iRoQH)R8;_FQOrKCa&u>>Uf=iKiTTKo+9L_SFIK%6 zq*JtHzkSo&-@CoobiC6Ky;HjRBRABO3X3|8va3TaX!X4(Rr>)342pTC=DBMT+?H)a z4QByJALU@4g!fShsBsKzJ;PgKi!?HfgBU27E@dRtam+U(m7* zcuYHX%^c`-*f9AqfTZ!*T&e~NkIz_1m5>C0mdZ}P0D@v>GRq~lS#5D*jwoW<{iEYy za}0X#UG7$$*;@upuncnax3KW{tZzDgVB|I;Vy_Sxg%wt??}j{XkLBa{boOUu=n9NB ztv@zGOBR^IvEE5+#wS6YZ6bO;+iNgQZIG~q6g_)TXVfLXTDGhd+`TWhd&FN~1mi>| ztrCqzhU2dArq>~~+j3hukR0`XKvjBd6Nq1qCRTTT!!c0&{@#-)_UkyUO}7OaGrIAb z*N45Mr~p|SQkz_Bi8vX^Q5&KJU$gv+hfiB9=Aq=OVZO>B=H$MFyiqeV5%fRtIT}xs z{9HH9dctNfSh_J)q(5*?(|rVL4@-pyPfDMbZ4U`KESxysk?7-_A0J;exJU-@zDA|N z<9C|7yW?#DuYkm2()2@{Q4P*e`2gEU~DX2^r zw(+fH6hg=Jed_NbCkE11Y~=5ww%0-nZ_v!lHi&L4MtkF%R7h9`QD^7jMPhBh`DxXm z{?^uEz|U&X*&yYA%zIIZ)ZXEw$Qye+wngpM%Ggohabd)mdOBy%+}g_nx_3%!RQ<<% z&q`(7cEW9wF?t9X-Dv@m7L3rXg|oXix_-XxPJ3peZW5F98*qJ@_wXNFQSRwr;EKqT z?)-6i(sUVvy=}9tUL%0p*e;-Lu$VU124+`GM4hJM5S zcWf71msHqjw;WxbyWG2b_dAFsepdcw5}s%q%R^krOO`8F^wtI#`-?343LYH@m1>5G z2nuOeMMX!N2e<0}lEe48-D30W{hh3{FGvGiuv?$mJyn1|i?J4XX212v*m^qJ0I$Ms z8Kxx9QUg>Je3HHJta$bHufO4N_>jxu;JDxWkbnO?asB_xF#LO>)Sp-QcS>PzaPR*; z#OGflRQ|W$_dl>W|MFG|U`J)4gWD?9_U}l!397$I!ZTw3ug+H~UK<-lEiJ8hp6hQV z{=pML9?&HzBp}{q8$^eD_uM8zK(7%ERYu!(OQ)FkVXyIwhe>MP?B+m1qTE)NlRO$Z zCW{wZv)`_FWo*+-o*PF9zf4uMhM3FeHEipiBPx#msUcm-B&!s%w8PoD|jmOZA`sK}W=y zt*oYAKk{0W9c|5fpCz*XpPvcNuL5q43MXb!QSpC!9Fk^I{uTso1MO{zEi?SK z9?urZdyA73WyieDL9*MTJP2|l&?HbP5C6bF{wl+Gz@(B3`i|E*$8n*w| zAE(JaL2}&eKd@kH0pU+;Jtqz;g+f=*^{9Nd+;H8E3uM8%l`_oh<^4%C=^(!)lq zO)s6EXl5uhVL3civHXA>;+N}Rq6SU7v*S51 zsiR~wbXywhjGH5?yug(j%0<75$Ym$mwtgF!OFY5kbHLaK#uP{J8nym1(qaA6;pgbw zh=i2Rbd{5;5F@+eZ0G7KEV{E@enZt$*>?#WWL1Xr(b3Ua=>A%VeANO-a>#ZmEAcVx z5O;c&ABb7*?PV;Oy@Ug}cB(7%cNW z*HoXu*A{dZ#OMIm5TM>!lW5YN{y)0t{?#Y;ARXV6`3OdgCqh;VID=uD=xfhG=?PBn$w1%Eyi^hH7qio-3^b5;xcg@@}G~KQd+ijUvC0cz12Ukc^E0$<&2#pLJK1s zUCLv-y5-*F?64qU00zY*g`cW6$&r!a27SOpv2E|>0}%!u)DMx1KfxzdGmi^WY`RRH zz#4o5hF6@aPXn>up0_SIsYa4f`s2f^qbBp}yw$e1xRz&vjPpUKB1G`)m5X6p zj=0b!KhV_kV=+G*pO)+?b@=dMMz>qy2t)`WDWr*xVs7Z3CKjcK-}Do*z79a<#E15wnNjar$^WgDh`^7d&n9r8_x4Ujw4d+C6!#{r%zVAEJ_35{jpg7(pGQ# zBrO|hxW6G;DeZG0#89<&ww)KwNwMxMlu9Bp1t=$brk6RGccaWv5;pG!@ z&`F&zaIGW_FTJV$0t^QESvKnO1KHZ;=1Z10t}uxD2gt2sJO%+BJS3hfKd3Bh0@5rn zoq<0Nj}l|Py=q`$q7HyQISt1a;e{N;i6!p9on zbNZ>JZgtpCdMT8&d{#dZ9w|vFG&yGJx?`hLZuzPBufCo&zi@Tu&hW;bA317) z&H%^&KLi(VtJ`Ex)2n{1RST=`G-iZ(?5=O5_xa6l5A_wgiD`f^?EzF3ooQ5Io$Zgtvs}H z;@kHtsHkE{8*+j71UkMcLP!jzY)hjwik-uEH=WVPZ+qVR=DuOR5y;$ozoN|rt^~IapyO=1cr(mkWW@M|oyc5)&jgS4F)W!;%DUnp3eH{-h3so;m&yPV=RKK`TMCipdeNXEJb&uh?CTx9R> zQ3q5%DH-)?(qICt8tfN@FQoSQ;oA~_WQbo9t_OMq;t88_Xo>9a{iG3D_+nWaUB1dseciXl$$js6= zKVJ_{bEb=ba%s+7fYlO$Ir3)a{CNTT%WGGp0hC_5rASQ^3v>bsby@t(K^@7jub{!R zH|o|rexzpPK~20QbyZ}pe9Sc-K9!1S1HjFyr6q1EgSgfWB%ir}%7S!(R?IkA>by@; z6yUm^pnmNb{>m&DyB9X%G!ixF65zU4^I8~FXjW5QtB)(Dp`+noXE9ZTnKi9183xM= z8rI(ZnBeID(3X+?#@l;?VW@qeu>gV3ZcyEcY!HQrJ++t2NG5NkQ&abqqECRFIk z70>^wDF)a0|ioSsXIB0Ae8?H_+<|=aLT0wjhm<=Jk z+?_BB#sS9Lj+(B@=Q-CHZjV5PaaRY%O@uT|aBxLdd=CbZSFJ3J=DS29;$xxo#Pwzk zf@0VwB`V=~sW7G_*#w-*2~U5t(iLO!BdO)+&rTY^q{(~N&Z$rykNmjErA;qleJ8+z zzIp=G;T&3}FznI9)O4`efkt8jL4k^ZjY~J-$XD zk$I_ROi<9(HLEj2tAz7;6)vdy5N{KQ@0p&NOw8!!u@ny;ekhW=xc_;*((J#4T?A87 zSc&7mnUWOgd^G+WBz;6V^W14VqA+V;`?m^z)ux0a*nhV=mEteh&ToQ$0@0YYj)z1L z>1bg95HY&U`3dYPEZ46)wY4;?xF~`D``+QT68EvS)$@py9p&8fck~ zvzQc=`Lj5W(T-9~3djA7)e!I`#tK=EbjE#zO6rEP_2-|@zrR~m%b5<)l!6&@Zn?3V zzLS1kmOb$wxOrvvdp~|&1 z)cBXTS&YD^MW;MTZ#F%p@ii|E4-5;KQD8>8I2EolEAa81u=#&%-B zRd01s0(4VR6a&u7KOX3d6=~KM1fe2!*fYRQeo%b6J4G=$LH3;3>fb3$4bJaL^@L*l z8wgHtelIHMqE~Xy!P8l)rUQm#OV*|qB6?gVV6qz0vHS^!V`pff{decm%X@sy5XSa$$Pv|I zD>(vZyyM4q57bq=HAlIf*XvGQ;By~%a^nU$Otso|E4N$d5yTiHTCffiezr1BhXeX} z>psvL>45Ucq`lk_rhuta=a@yvoa#+ch45Al@XPl1sRvxZdTdQj^z(Bd@^Lf=4tPfW zQ>__Kc8O~Xz|&=SalU64EkMRSpVYiwM_oLA&BuW-F~`}X~|K{lL| zt*h(n+f~??yMrE^PHDpTu%(KTDr|J71H@;dr-=SCLGR$&J~L%EkYPda3|6( zE#{U~xJ?0m-tYT!k5GVgjFg++(rXX=Z>()Uek_MRyIniyCiK_dJ2tP@l%)NC+`R`> zlU=tzh?OQqX)0Z%C?X;v0@4)(M6iK$0V#qs5dwq|q^bz0bm`K2?FDQGxvYj%$-?l=2@2H$y3fbd!K#w+3i>D`gWl|@yWGPVMEi_aQJ}DcFq&s z3tvEp#zQw~eSN7?T1|z^Vop+0(tjjYrJLx>l|g@y0SrPtah)HDF%kurUu^V%3fb%F}LRpjv(Q>V0K3lEWm|5FzdIa`NX`CIaNSl$Xzg zVwg2Ch)dW?IKJUW0%`LGPEq_%1;mh&MC$lR*g6 ztk90W-a}P&A}%gq;*FOpN+4WNr+7d0=P{^skZa^`03O@?@?$yy1VYWaZz0mOkk68n zQ{nhAb@kY(+lYAL$M6^mSe29;j4|O&2>@o9ffe$n8r>4Jrra@KW}aTynC+Iix+B=T z^a*$wR0(>?dQ5&wOy(GBn(Fju$H$CJO!zT61Q_3!u8E+q6?hNz;}SPY5SR+8DZSjI zJi{*TWVwt$zA68!bC9k3aCrY}{4cX+K8gf`Jdnm9_DdAC9s0JPgszMfV&=fogiRzi384fkRQLjgz9c+(59cl)?TFL6wkl- z0&VLLfKBtk4s|UP1DlHYUT6AzX!%31`S!wax*W`w9Et?c7Qgt^g$yZC1=f(e^@(~P z!De>~sBj=7==5=;&0p_kh4h+VbpnM6cH6|j-;74L#6mAw<=#P1W?80O0)R!Ntq3dM z7;SzsE3>oH3id|>Z*qAKHdWDH3Qz5*4E6h zcQx+ybxM9g(L-e}gX;)p#=O_NXY#Dz78cKemT^bQ5+q83v|fPL4ad~f5tqd;bsULo z{b$vQm;R8RTpiDTL5WsVzj(_~|4!3PPUi%)W!hud_R|1`tO?4|5-vVl$1+AfU5yKB z7YP8Sd0Fw^SKBtz>!29D&*Q8)=>xlq>_d=c5PynQ#wP6z>Zj;p$?Ksa5uiH{r`M8l zR02+)4pRQ>6F5YMJXPsF8TQ8I1(D+z4*RR9?w!KB1_S=Tdp{M?SIR78WH%weC80NS z;}j(gGVc{17Mwafo`E0`4PTJN*%pg4K@O+^%%9)D*4Wo~_ev-!rl}lCeExeLZ1Yl* zh5y0}kdfJPfxAjTo)WQiwhIoW4Sg&3_ksMZhdzkI?_C!*xt{uiOp5P0|7>B%;?H*d zH**sx91bhoX&6Urkm?d1qJsQ=)&EEpcz{6RQNaDzRLP_DuWSujhkpWOz#IRoVwJTZ zl%I5joSms6p=@aE15Z#9-~$r$z~4jV?Egq1P}L#8FQKi#=X0(55O2UGes5T1OXPs0 zvUmTz6n<@w&%=YZ{YX71HOv3_xHnJGX0JCfCi3a|pp2@tKPL3B&T0Jqi@bwT`UOfvs$TqiXVSr)@9F8odSq;PE*^-sEz`YI zz!OLM<(CgYG|{1N5aD>0@=j5*9mRgV5++cA&pk1&=$xJh&1 zr`DY0K^Y|%un}24$4$cCAR~Jjx?FYY5A*@;(b|G9r_UT$E-9q2&W=v}=02Go7zfO>hYVjVR^5R)(%41|I8q4K|0^z%%$H`<9^0o}yV@OZc zXiI9q`;r=Sc&O0+TNPPQTVC)0<>AKBe=2yBwebI6^+^4F%OPINKi~cXKEl}FI=CYO ze@Xm@?MLJR+MBc~sbh!7Dd9iG)4ze7oga0(g7t8 zAI^9bAf8+#$ylC^zsX}DkIMM{qkmrh-v@m7FWPkoN)bN=1ArsnZ%+Z}5euCQe_nA9 zEYyJP_rKox2f*a*-=Y+xONuBIKK;w{aqlT7;O-D1>8OOCvWex<*?A9796l)C4uIm2 zdB}HAki@wLC;T00q~muEfLjhP`9nonBPT-QU(u`4a(J8S&OewdJwgAeq;R~Q#L=EZ zzz$%^2bI4`pfX9Y!}$W{g|^(kO9?R7G`b$X`xi_L{ZZ1X_^E%v$LRhiZz^bH@(4>@ z`;ObnV0o2J6@ZwCulm3y{@k&D0Pfg)fK2UC0w7#ItAn&XMjOSy=uBiG_x>|qeJ;(4 zIWaGNFeAZ`Jvt6X`Trc+h19%1hphko2ZGD06^HZ3BK$V zz!8yYG|J2MKbuiLdU(Et4X|D04m+8L=l(()jPvWCm&a#;&Vd{|#xaWTZv_ry2tc@@ zBDJk3=3BxG-Dc|3lnaUJ6Qw_`@6Sr~um3pI0{x6i4uKk*7_2i+|@O~uUoPaDqzje{)y zHa!)yXziczmj&oKfK}}HBQB51uLa4qTu(Y|Vb>MX4~#b?sKd%_d>%aiGxpge5hKgZ z1$uPW>rW~>J!v|{bIboM@c%n>BcDj^+~;QLTc@N3a7!$zplhVV0MjpKsV!O-k6(Xa0I2^K< z`9RjI(EJTBT(xso-|x3bU43dyb_}2l5jkry2Us}`9wb>Kc#r?R=ZjN+5(h){NqrNP z=YRiQ_D{z=4p5gg2w$kb_dR_6>-HN`V*xeX!Id8CA2jHB{Qq*&A;8o$c>MiW4F}H)WNZF=vxbDI7|D4|#wqO~xNQca=hLUh~&qs`0-iJ@|%~2K_YCU+Tu+ zp0`{cZ261e>6&Uiy!E*_*#9zSS+tR|@+wQ|=eLJI$#(i)>A2L5)D@p#LHzs<4` zCpCdUPjz&f(g@59aCk727?n{6FyL$1^6r!m{j*Op0XFEQ(?rC)+ydwAr0_aj1puXe z+f~96RB@BPtdafkQEp%fs#pzF!M}87yt%i}LCbj18vd5=PI{8R=5`~O>Dk9*{EVmO zN%Aayhs2(5?wZRjzqGv=b-QPGgVTm;I>%W7D*5T$)TPiW)WlpoW-cC`ki4~z#vEsJ z)`>XL@A)sL*H8pc@Zgo++}{6zd_wP?{*F(}Cj%+8;HOBV*q3&NqSix-d>b9aA5$8u zp%JB={Iw=#x$)GSzDMm{EvjqZ21?J0J@1YYmKMgF6IV@A6Cd|ZsVzjRvuic~(wMEI z486#atVi)t(9<*A`jgxt+h`C#&`_6?bu^oP`vYPb^JD%>rd0W>fS`B#GtNF_o4-mS zZ<(RD6}u$4{TiKbo?PN=xqw0`>g^B)CCQJ*`L|Zm$%qIK#N0^v{`A79Ij!+pwxhM9 zf7vO74v?)V{7cSC^q%xZtEake#rYAHFv$2igykBGs&K#H*OR|aBs`OjhFnB0^K~ex zpT0unsgYS>pUKyAP&M~RZ6lIw%j z46!$@SGFRCZpzW09~8y(4(FIXGl4~JuJwj6%zoFhbx(8kePE{MXgyZ{SZ|;=m`%q} zOPFoNyOoYJwdj@c)^6Vw;6*Qsxox($_`E`er|!tu5=`nr_SH?}$==$FUrSd4Mn6&S8;hh0Pzh0T5sx^FdBXt5k0-<;$dJGy-pH1Y{g!*d@{ zYGyl2bhvN;JM2iM*InUKQfVqlp78X-xyS9+8qc&Kst$7WEA@@p)RlO1yZb7x+v#2p zuIQr^94|s8@3o_X&Q@SFEEN@FwZfl#c~hS6?a7l27sHKQiRrP_5+f`mX81k4V>>)& z+QmcR8D7~8iPMad#_kQP3W?O}^asp7gcRnxM(R*{{+@UZ{&Xb=v`2H=#@ykInb!v# zk@L7&LoZPMK1=UUh_58wl1=VtQ?ndG-MrGNJu3z7B6aC%f<{h`zDQ;eujW86Oq@MF z)F&4F39nR+O3{pSV-2%bv@pxSjkRSMOE_=XOek&S2#Az>G7dG>ZQ>&PH#ZH`AIw?g zVk~meNi_|+ochrHOQoN>+U{bj^O+2tcPu~D$4FdFlaMVq zAWk-rhc(3ZwgC-^=X}Cz#leklmD5>Axbk%-(#+HpMXlCx=^_LXh@8c=5ENVH4i8~^ z%qMIwTi17l=1J6G##U(y>!m^q2p#7rj2JoNxbh*>$=$C+Y9W;kyP%sOs&r@3JPamW za<5QCr!t0~TGHtglm!tV`@^>^Nmt_CAMuB`XO zyIw}*hQE2!I%8hFA;-VlD#S}ckb14b&mLW1zX1ZQDXbZqp*rq{b5BYt9J97sDx)~u zT&=Ue*~6=9^rON=jg37`$Wz-4@^C_s+@atwd{kV?{9vKe>j!q@kpc2YjH)Xr;T1Ld zEd*(6q3Y`S?%6@pmow3h#tTfdVwuk_t_&EKRL}VOwAS1?8|GKBR=w37CdsMOpXYA; z`ZelXe%+!^ZHb!h4WeDsM;^nZfU{4r6`8vI4+9a?BTg(tH-iNIX?J4hv^qj(0|B2u z^KHtuZMWC|c5#WIm3Pli*l;;Ss%oz~sI)IT*lsdN7qYBjWrvVJOI+UC6}!dktZXd5 zWR0*H{Qhc-i((+Bvurzzr*iwHU+l-EANLqBP2nZ?@4s*E=)iBqg@br-Np9(x+QRd3 zaI?t}i8aK&d!`}5zInXk`y;P<#8_X#vyG|?%R|MOpQ(e2djpSYO+KIZC245!wM#^f z(`l~KAa`>TwaG=Hc*|OkPguBUeN$6Vfx6S3=^SbVVau;vF~2cy9p{{b-pF+?;?0d4 zw%yyJ%~t>9k5>-Lk)wZr%1g&= z;@>Lha2bAiL~MK6(Fr*qM}Kvw1n-G$0%a$^eTmkex_6~Ef-=a5D6nGnVYDLP9I*mE z4N8O!WOX{vPG%>BmY4tJT-h<+s`v!L#Hv>ZQgZhwILgj-$|ODl3|MG~MQ}VXcZ3ea z7A-Xy>Jhig1m)2P{~1(ac>JEZ7^RfstU{)F2fEnY zc3YRz+GP^oE=PaUCc=62vlpI4b!lJZyw4tO%{FR=1wB$`rM{g}JWnK`Gr9`V(mX=D z9YVKwXHw!yR#2BgbU?dqp}T$S*K8ymt&>j6(b896!dIt@o!9aswaWpIpt1GeiWfyZ zxo)RGmiJ-88&)CToM*FRgKuJNbFZ>D_83=Mn_=_*LS9_=RqpRNRaSY=Zv;fGL?NzI zc^0IwUE~H1=MVYj?ZnomNL=U#F%iK%QmNgi^4!V z{|3=H+f?A@No#7DuCMOfz}?g2HC^w=Jdx|OJDkWrCCeTdcPF4V%uqcc>5G|I_B80 z(XUL5jl_J}p34WV&M6(y$?YWeIVj8VpDm*Ek`T@z7y9Eg3q0QPxmBpfjrGPssk}Sz z!E=05$xBU}S@;1Z7kiUeo6Crbd+KkaW9$(M3=r8>EdzT=kVbhc~bdwvi3vCYS8*& zCvKopsXD|PKS@bz5#c(wHJs^QT_sc_a>ML3swY(r&#YX`aZc1&)wR*eFvrbkH$36Ow(+ zt*Qe{!wf3qUR=N0nqO`06#Ce3s*rEEMkFWuRDATk>+Zz!86F~IWYjQ(@2CIfl1|im zWMmQe6{%;4l@dHse`p8^72_2iB8Fp;NDBTFWK({5CZ zCTmg)A@($K6;%5RhTq-HsW&z;0n5%@SgD|)(vJ(?y+6D9K4Ctg&&MX^ZJwx^?d~tt z8@y#hKt{!xV|4YHM zO}oS|bOWU97TH%66bTDDMKC3PBx`q){aAf{uMP{S&16%2Oin)GagFQtx;+DiL)y8E zP`u-jz{Yx-mm)`Art^?db zLI&q)Da@^hD<(4oT}^YGYTr$Q0;y*y?ip(&`lc4!?2dd4P4H`wsO+I<*8HT965AGB zjLCcQ!fbYGX6huauogtltXo0vs}o0_v3&E*qY$;4+PZQrAR?lQSR1*nNwJx>K^c`?JZyK$^Q9gdI7s-x{zC-+@!J2uenz zGM^3I44}KEN}hS2pP%LUcg=T*BK&=@`Aj2w#7G}TFw|}sQ`p5JaT`LhP-6-winM%%2GNTVQmr)KQx)?}??yNU+yRWECpHQ*f za=mw;qovFZ%X$b3$A1%{|120fM8?xoNZanR-I;K#j!xZXcz+2X$33sPz)wDYw{S&^ zL6KQdN)o3PoI-%v5xs|o(Codqm}i+Hg$^Gbou=2us%?BiuSrTmS_j%R_-f4pGTRLc z`1YUnHj-Bio0`w&AXkgipu}Q_u9dtZ)9QK8tv$xveF(#+Ex{_~e;VT;h z!=?JB=<5Z9gd;|`-;P!Ze&_fc;?dzr+8#aAWIW+*chl8=H@tKk6MmKjdT%yRYMV}o zMCkcp@*1hQQb(whjg8)e2Z+AC{>cgX#ZDXK9_q9L2o#yz)FytD5~|9)hlE@mshLDO z%rrIB@8?0o(VL6x498PTEzcRrK6iBg#kQ+$*qgoa8;|E5OimU}*A}7hM4XbCDWqW? zToI>d^5*lS#`;`&dMRqTqeZ8}#2hD4%sP;UN^x3ek)&%&yfv?zTAUeEC3vwACn97v zv#7QW*5x?8f-E3T1S$XuM95pU!461UBUJIJfnI1$JOlC1`@S-Fq zz5B4dY;0E8Pm>#(Gwtf)4zsbjN*3jY>V1PYzlQQIi`=XKNkmzJsRdQtNVCs=@kVVFtD$qDN>Gto$Qde8waxn!>7bH4-VL)R`l+Aal)MQWQp z>=4JeGrB6r)YnV;(NLLNLJMfyMgcnTo5%9R0zq>3z*Eye+3NDO8_5#T0_ z7>ptNA9na(2+REyN9%i|m5YLK%b}yAtqP?ovp6hRthn{7^IGi%rYl?He04;o{9#<3 z5EYSSx8riPxgnB%L2EG4p{Fy)BJ#0Vf@XUeb*H6U?XRk|t5O$dYxoA(Kpj0q33t(I zp@7b*xhIvb#Y0B;#X$Bi;j_!AV0I4VhDN0mXIat2r13~`Mt7N!adCYu@u~A(C`|$- zV-Tk{5okL=Q??!ATGNuTVERU}njLg&R-GK1Izs-qt&&r`i+oR)PxN(nk!wDcp2eD3 z2eR101x3?eW;D^6YdIWmAa5-HdUm_m)k&(WOD(o$vTGf_nB+SdhY=&}y2C5e>rO8Q zf4?`RcXw!qG}knaY;t*Ltfcd_cJ5ei{}hGxNbAFYTWx-3q>tdl%sYgdfwA=n!lO$s7}38LX>Ew1*8_H%ID{!x%cKVXIY`0t3N;3 zyZmfKn|Ejz!J2Y;)y@roGOYFWr`66I_7`u!HZ~r*Z4YE8thlBYy|!=h5#-P-n*y?m z&9#g|4Eo~dL_z>-%xHlN`s5a0w2O)}-qRXMybd!<;41(;Wmq^n=Jo)Sw$ps1WWOSW_`#mbFUEPT|7`G+VrIjO2+sEbo2lvP+>up+s}}R%oa< zg5I7ld3$dJjnQ=(!|FCRH0Z$|ZDa~ra=2S|)Q(}LorV}42w$Z*VHL||+?Utvg=Nah zc4@- z&!!F{S+uB=Yg2b#w7}tw=F$irwNMOc*U#JHUy?i9tZj%+H7|9&EJxoqRr9$4Qk(|%~PlFX@A zmS$49fh=A8`k0STjHFN+;@rT~{B}@{S(;tq#fAdAkt! zL{W5ZD97wgc3Dhip?L>#YlwO=4CdnPwnijWEGdPT%%RdX4Y*1#i`?4In*;>~#%CH@ zdpjf(AH~@;J6bkjMyhR>eLs~pS-U_-!?LpKIxn6-j+Lr08}g{2ToYE<>z_wwZii?~ zUKFxRXh2qpE`BuZkeMw~R0v8(Rw);I??mWB3&P#LY!4{uN`IyeyPUuUi1b5D;lUe~ z#FlHvG(y1IdTutlJ5A9*_V!NlVED>VdQIB(d)TX|SVhM3*M+Dx#JxSqnD$x16C#d~ zc~F78#HWwe@`XhwCMHcx2)VWxuvcr|qv?^m^4z|Oi;1~bOkpZGXpfl{yy&;ZB`)tP z8BWF%-#0pFW!l<0${lsaH-_X+ytg~`n1Q+Wk(#+2xXy#08(e2;<=R*fQ>oLJQ7kE7 zH4v6fjF7S&Nf8Xy=l^9=E5E}FY}4T4yWAkWLE{#1P$*F+aLI-m)5?P_@5HFa;(Hn{rQW3auJFz_0DqSA zcU1OV-u2gQ-c2ott9K<6xJb7>BW3BjiA3goZs9q6UCSBzqpR&&qm=`BROY98EO-xI_?z_saDXWBUj1}Zo$u06p6u1R!*+6gBfaqy1$Cx$0vFk{C+~zQ*NKn7OEn%Ee|>U3bg8HYex6O5R^vZ#WSs_s zAbXF2IgBac-~tjg$ujOfw>Z`FtNDO@@ize#Gv!FRXB zMlKr97hudiZC&}Fb15EprZ4bu9rv((T3Wk*4*4jAap7QK$e0vK;}B=tcsA*9AkrAY zsNb$&*EdSgAn_;J6@8#Do~RKKwLeXUzS9tsmsk5$zMPBn(^Gb!g&&pOOrsj3@;RWH zhA0@I->f+o>f{p+FCh`}{e=d0ubW@l zSu0?>+fH-kz`+)%m>;T7x&s{X2d+`lC$5i&5lmMCC}BWQd`u+=q#+%5PlI9mf9BJd zot6V|;=8#(|N2Zc0#+nV1K>9IusD71NCMmxFb_C9xD^jSaD5~>s7S~E{HJ>IM<%^I zEK~4^z185*zwuCMY=8aevWz6B6zTY%|MVeuiS%gMO%>Qqa|@~XF1_R5AS@4llDCa? z{NMX@#&GyVnp@Ph^7u_jW!R3g(j$``VXQy1qSbBy(XG6Y(J#kxc7orsO?1Y+yVgQ5 zsG<{uR(TYB|36@ZFZ}0?`z#LqNo4;dy5Id0F%_a1s(+H~_nh5EcBxM|iRD6d4uYoQ zz5k~>^glB!|9^kV?JG3w?n^XcXpkIoc6@u*@a?>HDS9|bdqbX+Im15KtQyC`;O@L# z&NAwRi^)b7`LDij7?Z9w4hf|es@X3=Vjfrz@u%4-D6wHPqudR%b&5aAkZNa>#P9F4 zrwF+PO1`-5fyLaHW@cf%+&U$e_(?-Obd_o5n-OC7vrh$E!}V+0+S;kngzT1UBvDSE zOk#!Gdv1%P8)CL2x2+nB)+O(5ofkDRL2Q>!P^EdPqRcD|87NncHOXD`bszB`rfEJR~Ygci1$+o4GBj(6n`?yD2W| zBoG%KA6X13n~sz1q)6gMsRPg5-svnw-I*Bb9&_D%ppsMV&=jaGlH$IDLV{+Fw}Yf0 zB{s1XrCjMP)+94i(;V&MHxo^h%pGyMn;lAl=Yu07#mxsk?F+Dq+T7S5>b4#!$<$AM zNPk?i#MZFv1A4=~fP&z*InREZx0_ovF@(*Rck;TkNu=Wl8@YCTwL3dI zMi-T~7J75tz4~Cdf-pht{SMY#8&p+#7i=IS^lgKvjOA$3Fw_>YHV(D*!(M+|Zx5)| z%O&cFu7PE0<**UEp{guGSH7Q>qu=DbnMC~YGd(?EVq&7?_3$0gM9N9&UxxX9Dk={- zq_&f;jY0de9yv68oX)M;8BIX4tu4P_wHDk9n~9hDCaJ&MQGw)T+N?fn3JAuS|K)NKY@oiCv<2 zv1{H7f_5dwh|!gH>L@F-OG5N-!&hoxbA9-;wyeZsLJPy9l=H%0V_0E zB|X8)P1d4X?Yf1AZ4|$H!kcQI#Muk)N;i)kt2W1gjzXONbCAemRgUmFas8tTkRBO!B)3=D;q(}R1_?C_pfp#ENN)#_68 zu*h~w^0VAWi3&{}=5bKD)&c8@WR`#ld(cYlWZ{qkKf!y7fwPk~b?g?GifviyD z4d(0;TjbtItI$=$k|Z7D;(WfCkzC@BV0D?r`6kW|gz1|%%K|yO_H~K@Xt(8Qz!(&{ zoDQ|kVDNU0cY6TAV9Ve7KTv*HmUNQX-7I`4wXwwG&tiir%I`A%Bu%K7f;!2p{UU1S z>O@8b_m(LaI&=WwSOBna^S+ecYy-nXaj9g3YSB!s>b;3VP^ZbNFRl5NdCXXaTID|S zF2RWrU&67LREyI_IH_rBYT^Q8{BbKJ9t-&@P8!)(^EkKtZgR}ZX!%8vi<7+{Cbg~_ zGBYrMT6Kd#g2KZ2T5;~UZBr>XqLe>#o2ojx(t2?Ki*|9?SHh6XU4OCKRkvJtueFK; z$~utSidZK=39v~=naIs~Z>dVi?9^1!@~{XHG|8&#jYV17g=XS0`e=8&gM$MneCOS+ zgLx`utkR@unZ@_s3pyzJy&xnW!f|u{oSk!hG z9Al90rfsI!xH490_AqX5eWSC!v5`aMg+>B-KtO=ngDhrNR#r}yxTxSLF^|~{A>!_! z49adfh%THKl)2qp>gN*>+2|%GR<5@)MV>pCshP8bt|n4WyKpzSN`7?K^>=(+US7^B zmZfezl;^s2KG_+BRg#f?RHKsz5l#iK;dfa|tQW&>Esr!c%;Jv>lqvU?m6e&QhFkBt zW{JXDrY03R(M8%Db;}}`%bnoaFl8=IBo(y_-cS_=^lM#jbyH8AZHGn!dwu42W2s@3%{8I~Iq zmW4Bd)KWGNA9n1Q7gl1IV8d8=L~wAS`|`JY)U%y2B39Nl#*Cjw(jLhhPZT8kLso`3 z3?jdL$+sBauW33(A$4^C`KTVLGa5`)9i-gcJU^Ck-RYMR2dwY8| zAO%ON8thFTJ_q7FI7m7oG*bKiBP^%IU`Nb}0SwCV`b)vTt!^1L{QcdKw1?1`IqpqH z7Rn`c5eCoGD*drn;rPUp>ps%KZnO31_Hxikt0~ry8@#+T6RkOxJz2X0f>Ghuw2K^D z!m8=ZI7_5_5S=K9L5akPTEB{n@-AXa3|msZAUlpMoR0n-_Y z)xfqKU9=iZf3jDa=rIxdl>bKCp6e)SIn_Y5$pKkUIgqOx6&&1~;TQ$DVMx+Sj(O@@Tk9tZUx;%YTmK&_D_#V-C~(_-~=9qdT# z5=tK-XF18Mwvmh2`Iu>2iSIa>PE%*43EMTLKQ1JNd#b59K$#kC0G7Y5Jy6vHq}JZD z9{B!)<3dPm4WuLM97!I=5cd}g)uqp$=Pl|I6tf-$*|Xi>pJlElcyXm^X6pcfuS#@c z)EEuUcqV{>jRG<0jU%NZ@G}6p?V<8H@{2HZW)mdCtL9XtJPEhy&(O+^dTa}Znoh>) zE&cJ{ln2tI)Pp(AQLl4>GIYW>{eg;#4LaWetUy}}q7_?nTV8Q`T2Odg`Hr{u*U;;H ze3G_D5q-XEIP*ctzRmPt6Jz6RJE&=P38#lynu6s{%cOOqT(#8EO4AmI&mWDXk@`JW z3e*Y&K89LhGTzMGTs=-g{MN1QiB<#}tRCk@fuEG`rWNV}qi~=!AxYl9JMYmX(gv}S zI*6}$ws`BqhYx@+!E|-P3`ysL(&C}L5tdHFYVf9^e|HeRgOY3w z7Ze}O47+9k6e(nie&y;nYu(bTx)o*mxWE(J4381+3+u^#W4fp1H>jPKMz^q~V}y~` zPW8Q)^6zL+@Y!~!WyxFCsEGm$@p{z_5s{5ZJbsr})M%7k3W~Mv&B4bf)X7Bc*wY^e zDvf2PruDa*R_@~s;j`#B{Vhy@t)0t^+ak7I;@pqr5Y~j&5ib|R+JmK=k>&{~myP0E z)<{vCo~0Hm_cJ=dfJL_3=BxKM1*VbqY4;yqNxGM*xwf|E&vNa(+brlPnW;QUOt$2k zcdk@oc5q6ZRh2HijY~^QMN&{^!DwO^9$SUoUc6Uj*%Y|k8h*{DyTGv>-#h4YXKj@z z9dq3sIUtDJUPhLi;66^bqMWyqft0vF;kke86?1DN&7zDmHXE!h=H}+9Nqv%Uz1rH^ za4UO*Oj^XbEiHrnsmY)#l~+SF^z=q^ZEGAS z_qMR;4cpK|1|k8a1m0*3ySisQ-1E-M&xdzo(xNX>D-Kj?#iCpi3l7W=cP|2~!H@1) z0K=-9u9b`SkPFqPSGjQQnoZk>)V7FQrVZ<+mLwZWnlovtCU)*QTA=}zC)FiH^L2`W zmfvve zH}JSZQm#YnGx*p^yL*p}!|4e=J|g8Zg_zFDj2$Gr#eZY~b_dh2)x-R^_yy8e(s5{p zFzr39ahPdz`wB3Qc-**;JIr^mEBaf*?(o9oWyZ9_bPBe6V4;#t|0*-jMS2d~L1;DU z6aB#t&5{%ghY1Nv?4a>>$Nf}~Bzuv5x4Q{!aHJ1^-mT&r%HRAvV70z*;q*ag zY)}4MuMckdmv!LaYrN+_utEnNJ~;X4QcVH1>^K2BdF2@(IDL60p->+ywlrQ6il12|Sle=7(c)( ze>yM^$|ivwE$1FOvDj*mR;mh%fFSVOQ9d@qNy@>{l?s`neFQlMzPzPHTUtONEG*o_ zE>`iVPElP7f43VNsFxdC4JTI0c!$~IS~+>uW1nV)vy>Jw@xqHoi9f1st9D(dkm2#? z1-d`~RLCVx({7QVJj+^j?VrHaD$ha4I7L>@jq3#TMOf>ff8hxh<^C#=?2u zpI3TK-ht}?CEsbhxSW@ZC+@8SYl>|(zHxU}-?^5O54JiERSmmFnNiXh5VgOfB(pqF z3?+mXTTbi$$kr{E9^VP(b-yt#0~rHQ;O_PMuk^uW@vyxD)D@)w;l!pH_)v*jrIR%> zv^U?~p%*h!^oo^@CoreyO_BeH59L!6t*+P=hNnh=16ZPoV+K-C@<)ktPVw4>GpTV- zX7tB5W;*rDEluqqgcT^}rMY=ieZ3xRE65lGb6v^OM>@fYi!xM6UMEhmO6;ew!U6sh zq`vxZE2JpiB`T<>R7+Rmn4gO~Eq!QRsm#3KpKmi(A%bwUyvMP|sx0b$EZSikV%8CT z`k)!+(e?vb!y*EeT+eE?&12bH>Qn|goslKky(#MKUGNu`CChtTi!zQ2vvQ#!(a~#IUxRKk=#PVogL&ba1u+jIuDi<;-^tNO zySBV~c8hC&#RsjboX+BY+i@hM6y<8t+`|LKrifZ}z4-Op$Q-_i6tx+P@&KD}jk!DyW1aocT zJ*c`5$F<6w7qdCz>P$R_ty!B{Oqi~(uYaO04x9UI)c#GB&htfYNLozf)HI1<$f|l*PrxE1i~g%GX=f`C#h=9A*Yo%F$=#fx3V#acRfi z_WRRKDYx#Am0QgMMABH7m3fd&?kmP$biVTKyepEEcwWb4-jt=-3OybYtZt3YQP^7O z7kmAjxaJK^K6{S|*UQR~O3#yxz@SMiw%O8f+$jR`3k+!cH>t%)^Vn10A3uEf5EME1 zD5N#IhJlyZ4koy4FegwF7gCa5kCr9CDrwO?tVIvUP6h!3Tuca0$n~S!E^A)kx z@U|+ixP$$m%T&JK9^Kg?HzJOelhZKuVazhJH2n9`_d!82(^I`9nirb27Zw(3W$Wy2 zSK7k%=Ic}A+@yW(YHFIrH;X|B+Nz;gW(bk{ zNs4=HOtsLpYc-Hu>Gmj5!)i0fOBmJOl=eVQs61L4fBxouU>F&za_I&0!Vrq@-&!1; zMrXMc&JfEtP+jXm?rx62k^lzPDHjEMypXaqQVrMxg!mGdP6tIqN8ec}6CU>qy0h1% zDukeSF9Xw$#lX#GAS)7HwpFswpGhtUqFk19^ecS!A~;6)+4D73Q$nz+i<;R8hn3y2 zN^F*9^$2O!0Rx&qZq3si2+2FKss^-|z@z#S5E_^t2o6f>SW*R2Ia}X4Cmt;BrF;dy1^!}s}2N;1f6r(kC*exC2l!_YNnJI96H3&;=4&+ z3gx$KQ4^jU2+6m<^3ZsK7_!7xU~T)0)~m@zHFv-pH!b`4H?MOibgUX(JW0!T)4sMz z?rp0KQ7?4am5GH_%YyqNg6!+puQoOFSawM#s@(aZ{3lI;F(bv+hP*tV@-8J;`PBK+ zu%6c8zy8}Ye>*NVw#IpF;+lTNNxAD__5!oZ!uuwv$<4wVNOyz1JvnjYHLB{~#*E;@ zJL5^@VEJaXt#K;ramOt=D10z8(A5!}9{Q4al7?*^j@aEQFje)xtw%IDdFj$6?=bU@ z=r1ztr*tb`H|yFWx{Iw!fx)iho2bM1cb}i#Cci!#HL*kW%A`RljN$bvYCk&GH6(hh z2q0XwTq8j>+J!W;=F-J~WR-G#ZNV)j25FfM2E|>>+wZK3Lc%-r74VT)2I+t~l<@XC zVx)L+bafH!Es@2zSDT|>=@TZizlv{)bG}rh2S^@evu{n<=gI=K65C%$Nm2X8k^dAe zjT_xJ#Itl&LgISWB@^2W-8)JSNc3VB;F4(f}Ha)s(3zjV~|6e0h#yZ_yt;>#z6yAU=-5wIj z?P;j5f0}DhtsKm&rSIYx%u9X-3(U)y;lkA8*gkdl{f+(k7ekl%!hbR*eF;wrDFw+p zV;mDwRHou6_}j04A$_$5AP&*vBY9y zsB7n6JO{EVXvp{NT$gawK7rgX#&Ye85+}g%&4sR~H_f)kMS%&k{huEK3^dqo5 z6liUU=r*Ct?wo1Y)q{-XQdyq`3pd$E;1<;Af0k?`37yS3X(z>|Ax z2C_TUD$vPjX!_wg$A|>**L@{2Tpqn#LnKrZ%W>#?h$Jw%E-JCH>Y(zB@KV^ZV!Lrq zKm3~CFLJu-g^!s)r^$Sl=``+x#v#!}y|=Fv7<{MukrO`HQRv`^sFm@gF%Tc_4W?Q- zJ8v5L(&N-)ZWX`ZxH8-d0K#OVHs>eR?^J*}B@NpnOw1y(0EPJ<@ejPVdy?u-m@}cX zMHM7Na#4eN_(Wi_~fqR-Lj*(2>9d2I0ePK3>z?)$5$Xg&0yBq+23d$9v-&0 zcR5DM0a;3G;($A&Yi`U@JigJyE_tPDKUIb}-YTSZTrSUP`5SzH(U!Eln|DTv!}f}f zUc@b{C-{D1v)8k5S(~^A$0M!5!~9kpfYd4_PUa>Uok7EiW3HFCuH7b9x@@r1o_(6A z7;v=r0~38E!rhZALd3k|o$Yp^Cm;RmY2C^%d|4a38i|*~DSG{HlK4X;- zAKVjPMhJ0nfIZ^&b#Cs2M|HkdgV|D}a!rBa(xdPd0&xsWz>)85RBx>4%F*jNY|$yO z8>vgr_bG8e(|%YDW@+PR5d`5rU$;9(dPKr8Ukv93QE6#u@p7lrcufX|4R?R~$1e!o zBAq(}JS>JzbE+i89aBo=xvg?lyI?1dxCgaxsjUyfrlg|ZPPQlb9V0&lLSX>a8$i*D z_zYH&g%{y5&2gL*6c7wb)D|_`^#%+mIV~I8)7U_E+Ee$+jOz9@B+eE%%ywW59d`90 z=-uHYbpTmGRkZ+?jasi-wU}Ex#KGbIOfB2tf@c;kD^=pVe2=1pO>``{rKM{eGmlk| z(weVC4=4B(BDR)U-C@0JCh8VoO`5vc9lA6Pbnxc5w>G0?HC?$F|Lt)<%q)iQCLocW zSYnCw2$-(M&t8?`euFhne*VRMpq22&O>KE*P&LB$yO+cZ-PZ~iJ0v!isHER2DmJ2R zh#M`Bv0YbW0Mku2!kv3zS=#kBuwA{^nSK6(i-h=EuZ}@<7Mwq<3_Zs}I##T0!j6@M71XyEG35%Q^0s zsg+A5#K$adVeYEv>MSmP`SMQVE|+1@P*tPTNJvr9u@AOo{iFeZ|Cz&EHgo{!&vx*b z&`eEVT<(-3W7MYdPV02ONnmdMR0`0c5`40eC1J1W%wyNGO95KgYzKRSpW{Lw4O~ga zwJ)OEFA|$$ROd_0+#zIKs(xqdIoPP`l)PqQU=XqU5&!Pkx|#AQ5Xx1%4t#LwR}=L? zA|fKK`_n+_Y$je8*?2)Xy|8xf0}ZPfgnS@OxP-c|w2v=9N6Tn)-r5#iWu?LrBDF)&wDRgs0SHfG8l%n^jWOdncm zm$acFl^ymTKoWvu)3R=<`?A?p)QQh}lACsujWj1t7L7Xp3e_Av&#$Sh;zI2QmePww z^t8dXA1jIb&@_YWRhMUV({zGa`jsg^e$)bGe{mq2rk!O7tS<_NmDakb+dW3}^W-Lo zhzq%CTZ?q=vS4wvA6_?=^SP}jR=>KMbXsBpUtmAkxK9UMN@6ynXFr|{#s-O!vcl=b zL8fqWK*t~~&(uFm2(jau5Vf^1TxnFN*nnTDX=4(j9j=7fg3X$qo*vkc2;IiiLWxj_ z1x)WHE`7WISEgSfQ1ljah`WG$*~Hh&wwFizj6Z-PYZ_-($Eeq5#04%GUmb20K}Z)E zP6g943-aFnoPPH z3RHlTsqD`=B)35x2~5(B8nNHvFN9b(wkQX>4R+KKu5luS;NILUr6InHJ19hS7gU~j zst;77-BhfAYb&q-+Ilsn+cXu2r`a%{q@}HWRQ$K5DR=& zgvQKFEaWJ1?U`0B7X`|BqZr3omRoPy+ScZV5707%PxgZq8t8kD3q$1&sX&o^8}Q)+ zFjS))2k{Fnnb!m-aM;H+RrNYIZSBiwl_eod{09sRwBw{cHK2dkCpMmlwHz%|))=UP zG@sys8u`x%!l4_2l$4aYHQOyu)U`Sq5HgeE&PSf&TyqP6q8UQ$b^t=mtTS>8E{0#g zBJc`e4Oc*%Et_wQf^Q&+tsTw@k$TeKMpPUHt>j^KN;UiHrRB1(9Rf4=jzQ8GGMo@Gx1f8bMn z*xn}f3EMAcfg*h_&^&^5O7X^b{a;^s{1vD#J3f(stei36WM#$W!be?}g>qz8h8~R@ z-LKMMOZQDJ=pb0s_)I5s}_|4N(zM5D;lnBLdQi z^cIM8>AgcDy@t?3Ldx0E_kF+b%$z^Y%=!NL&iw9qo*4{DxbMB!UVB~Fy4KotAg+<# z>4-`VzYj83tZ@88rXSLNyFlo=GQRMI=d>oPl8qN`Ow?yHU6I>wuQ@SbXIohPo$e4) z4-FU_MX9agKYvd>nngf*@=jmh&c)0^KQNEiU=$Py{Hp^slzR{`iu_QIZoNC9v} zb#8Y!L}CKY#uF@f+?WU8tlV~VAbVR5aG}iZH^&(aruQudT+FAZPgBe2aIm%Y*y9T( zW&Sqt=jrL2_gp}asG~<6t)y-aLttV{{qp5R0;gBGeeb<(1y5{k%hP0%PdtY&R9E+= zv+ZDxPG>?X+xPDUhBeF1<`rSwwB8TAN#_lza~|kgLT&YYSF%>FZaza7I?H24EZ?a7 zl8k+$9TH7KAEPDGbP~lDV0LJS@u6W;_|CW$g88s42nc-L@ei!lRzdYZ${p&2TNgvv zJ3{V?lmB*M@Nj`ie}zjFKXNYsup=KY^=GOh%It}K&lbMOsjwfun+%SE8qb6xWMJT( z`yIvV4*F=B8)DyqcZBWlN|tzO`~zS~hK~=QsN=+JGdq0iCqM)~Ti?M-rL7->oQ8;+ zO}AVh2XHERueHUzHbkTVO?_9rMj}l3xB;%mwP{Xo5UB^rVpD_QI*#tJljqCD1x-;| zt|~pFPHEE zlI<4t$ek$^o?~%{xP>tB!^6C~zW}j|W1B^s>DdH)ezfQrGo=^iGa(*KTm^%4nyBX} zpq>DjJLLp@<0r*o?J$Pold`f+mDyXQ2zQfptvmYo1*>m~-LRbIWe&W2QOtfXBhL8j z*bR^|?JUO}ZyONqmXUtB-ZL<8h_YPev4Y7rB3vzF(o>7~zYtBJ^nF(yhXM!I5Ft|m zWNw%m68U!mcMu{$-=}z;zUeFSfn7%dM5#=RkUJ%G`BZo2`4n=^R+kYS@bzp0?j}y> zA^31?g6I~hg6{5HTM(c(LmM8dyJzh!`{Vf(SzRXiK424`sS)Ag6UNU2JMud8pngQ> z7T=AG1$C*Z#`JVl_~kfbSE2`+Yyh+(fKL(e?AQSOA-%{MN;4HZq`iQO? zLdIil;=$hu7qy!Qypi9|DyOf!6SWf`clio9T_qzkFtxxB#3=Y7QK5I) zz>9Q>Qwq*86u)R<6+-R#-wXgeF|jowfEtCMTt4rj5b#f)X^ky;FXC~yl;FV18VQPd zRz{yq0A(($a7h{GmcCq?cD_28XH$F~>hVdSP8tJ-zNda#fgx0;1%#eJC8d>`R0?1z z1n4us|Ih8YUGZ={rp&?a+4sJ_-3d|)7Q0yu;Tp54el;;ML8nP77q)KY)@ zg+B!A>11A#l#gZwk0hA8hi^fXFm2FYR7y~44^y$h9kg(c|96@T_dB_w9z9$tenJJ` zg9%9`mYiPbqLJ-L+u1=fF_DoQ!4Puod!gw5zFjE-xj1zWFy)-pkk}Dm!cK5nV!jar zZP%Yd@_-Y^9j2ItN=kBv^Qa4GM%XgFE}Z{x{^|br}{O>8tMZY6L2~jB)0cIt~J#hV;Z)_jTZBAT=VJ>f9ZH) zZNvFk80_0hiMUx(Yyy-b0Jji=xof$j17rBns5KITvq1K=L5cMg(rIt5 zzgx;@@l;R-`S#7>{fr*Q*xM$q3npICMNjA>dcH64%>9$itT0+2;dHqHc(fDD;CMGT zf9rQYdea_509BU(A%Qg)lbGnY`b&e6Z2$}Q5y0qq0uS9t?0$EOOTu>G3kbac!nU%o z$cLgGhgJh-ICnPV)?B-adEFZyFiUM-LZ~b+WUZ*}fId24axVe`dMNANE54^v z44c)d0_z?+={$KU6Cvu_SQy48+V$%Rw8*^`xc4gerD8UXpP9Ed?ekOjasQ}(;ylpUe+U{VM8rupJlgxVOH8TXF!1~cpWSR=gvsvHd>P2s$5k}*{C>RGwX1L3NL|tZEX!_l zA~Fc7nMdKhaih#`TqgRfdV&2u~x0n;oSmtSJMBqbs>y$Gmr=Zb%vauX6n?PT_TrU9p* zt}^b{+r-LMAn(~r+LgW`!bSI5@crt7f!1T-57|cAK z9I&?S&eqC|mj8#&yk$N6`_|Hxp?AJi#*25d08`ckBQ9!~16AhP!*yv9GC<&CBx6C( z)&H&ks3oSr)|Nm%prxrP+0%AoUM@T|RB~n;75DVZ-Uhh+_WW1i%?GrT=n{Vx?~278 zEW2J%9Bmst4Z8~jR}bSWHa6oLz?lr$L53iU{Vj^#!;OCZ5f%Ke`H5vV2U2=m2A$@CF@3QPr1ihvT1N_lX>B`k zoIebK1iSHn<@ay?&F}vw|Nrz)3)#Imdj9_i$p3Ff=vdGPZ7%aCy7G@o1jrOlU%Ep7 z^(XqNjOTCBO?0aJSr<@9+#|E zqXi+JIG+3B@lCo;;$}gE>V_a)a&q$_C`1>Q1D{b=k^n*o=bQhS>0J5q9{F#wAX(RN z_KdE;3-E?ln&;>e2vBFIub>1P03HZYpzHY0T=~y&_dYE04g%Fw89b z()!t-N*J(Q)Rd+KG&q<~f)y%plMSp(aNWdzS&y~uJbvV@4*y^I5qMEs|Eaf%w&hz; zy7y}F`XA94@byoEcL%D7cZBO;#Y?jK4^A38Nc`*kR&8CqdZTZ7+^Jk|W7O#j99+*L z*QC?=&9uSFezUlm_piQ%qLUmJqhYUpe7j`)w>{|B9FME02MPB;KQ4=q%{98r2wX9X z7;9DA!*5w`<d4r?asw_AS_z0+5h87!AL6-TyHd$6>+g?3Z0CN@N1{MRET`LnJ6 zzES($KUabWzpDmosmo-#Wv+?Z4U83e^p`9lYId95fciqpy}iK1H;l_ex#hG;R1`RS z3TIkrOSFn=R^OYY01WOb?XEmYYKf4p@hg`JW248#k3H3P3z8*u3#c!qdGYEAWEZLc z=*qtVVlQ^XfY}YdGJA~kTDg$TK!w3r$|S&fK6{1LyK9qMzi6gR4(s#dpcUWtp}?cz z7ax${4&{&OAvMg$%LIfipZZcd7s?&5nr;2~fx`VPb9LL{0xj_OPXIwo{H1X(d&*|J z1wxGtP-a#cSgP|?WUhpV=33QEYtQDEkPKCEBWVgCoz8Lws- zS8`3W&e?WCE=MPq3O+iPyKr|(lu?Tv;Y^N~ zKN?ZBqduH(Ql8V83CC2%CHrnZAP$3^K$^>rWf;3C`~ByQz)C0mXjmYGQ9)6rqALoP z2b75Y`Cj5r9XL$;YfTnFl7flt{w9J}dmY}UlMwePtD=+>sKw^yAlzav-Mv+}Ec3gh z_ouHMQWT`Ua49@(^5&$J6yOtvAChg1IGSqZ~eg^6iW}Ynqgr z3Akp;3^!(^L@9K=`GnF5&avUOp4xUk-V|6joF?Wrw4gKfBG*=+WBXDRaLyoYkQqL? z(3Qw#h^=&sST})|JJtYo9l)nIwtwhF1QMtvm!g!7_s*g0g0<2 zj-29hU;X0G`6Hwn4C?oS=8qDh@B!ALd^Nev<$oH6zH=K=?H3{0w{#CuDc~McCrSsZ_;N>_(Yt%GQ)OL2g{Wvt40{LxbR8 zmJ+QlMkd!0@boU+XstyJT_kZ6LLmFJ$A;DT?Ltv6172H!%90{b@&=q5LY0k`nK=nI zuVDTd!RDI-mI^2d0buv~eahK}=64tR`Uw~q7RoA+l9*Ck?&&%y8~8ZIn;gG2-}yz_ zYiy$OSpWNJNBI4W>|Bsi=;-*^l2YNdxxfsL*nG_C*Z05*%CYP8NND| zs~Qty1yG@#S?2E3X#e^~0@RHV;Ea-Sd7il{4IW*v608w!U zR4(KLM?2mJ7D=uk%?Hevd|E^}Cv0rRNrttx=@Q5tr`b7X0cUR=s1Uj!voS!))rDyw z1D2OE19;s@Ak#B!yweT{3jdZahZv7S>CKVJ2q{kj!m%b7Y+b3Mdd8G|x&4p2FByt0 zR=%@91??ttOiVY2Yp_vuhf;S;s<%7P1`A!%kTHmd9atX=YLoK(R^7=LxIULu1PRqu zd)}Yx?c*xEbo=#jBQ^T0)4TO)RKWajUSiyIuvYNjIdT2(nwV3eyPW`V5;}D-*}nB(%{w?$4Sxz zcrVDUJ~;j+-$)#?H6cIM0dlRRV97?Fh)KX1h5-INQL46wk;{*q;(Un|?Bxw!}(zvQ-qPk^H z3ZO|O;SV1MyQC=Oo`y&swVNV1{yLR#;G3kqdkUvyOp6zu*5F@{%eTADtAP}WV=az} zz%h0xFYlIf&(FxIR5o7q_;obW@<*aLd|p0+yzpiVnI!JiJV6v@z5RuAs%bRM5Bsc^ z<#1ijAU~Bn%r1X+;2onKo`!`0af}@2b&!;H*;KNE>~tK8@h;TqykJTCsFZpV=)gRb zl_{V+?AoBRV=qcIRr+|f=UU9CPZtekCOSeR&(|Ktk4;5usrWTo{y2Qq<^es>dzJI^ zOxpRYK)ltLj)YmD94D98T>-fy&oEiFeOdq%n|CEbglX+o9a4Alpfk;#A%jNz_41jS z_~d)IsAFJM7KTmEowTyp{?vHQb7S6WhkE26F*emlX^qt#~vapZnXzdDR4czp#tNQiY$h&(JUhwTXh9C%v&Z;K;NSz={XX6 zfiDPWzN^x1JK$4}3w6mJQhXN&g>O|p>pH)?$*&$17eTZ|wY61^jw6hKv)Rm-_^Po)1;Yc$}2Q(cd#Xcuf$MGl;@87?Aw1JS!#YBRz*!KY0 zuj%QzJAHi%LRoG2fC%_Pt7w|6wZ5L4J7}kSJ}Vb^OWa6hz8Vg7+G44thu?-?=ms_0daWm+MPB(m^>Kd9Sa22IK%!b6+mw?WPk% zZ58yrO3`dJKk`m<-m~1!2GzXGdL|p8X7Y;Sjsx~!bfO@%y}Do;Cv`}Y#<0b}h|qsq zvt)B*=q0{g@W=PVnds?u3;2FZXJWbi?H{r?BPz*#2+oQV*H(g9v5>8~` zrPsND=I`1KU49B!zlTdr1h5)KMMWoToBSARn=JHSi`FK17WBxo=7W)udTxU`Y7?|A z*?}&y>`ZT~`IphWPVtnk+5x-7QeTGN;uQHvaXoCa%6+*v%Pa~E+&eBc>5jc`XUjCM zdk>$~Q4_$OO{|me|5-6o(f6<2kOfpS1^sFjkP>VY66WWruWIKWjBZUOFk!`~=^o!O zMFQ8q0QJ2s60dvaaGWW5rl)?2)bjErSL$rAO1m=I)VhbWbHSZTdOGeK z`fOTwD{4=iyzRXBi^;tLoGKrV1Gyq5f#DnjJHlG>5wShP3p+aNT70ZVF%D+myT6=I zxO0y$+Y@hkC_&tg#Sj9oqbFTcT>Huigv+bFZVI$Op$AVNUNmFZ0aj3NIL0Fun7Wou z1d7F)Z2?~T&OmR&!UGzC0*(|xcMu1<+k<*Y-xy% z4MR=erq`aN$Rl+nn`bwI0mTW>`$74Snyw5NI!_2(yFR!!RO+RmYf=3Dn8X2=JJvsc zt#3}f$vSsfd(NE%WXSRNJf^`WWj>T-6Y1{AzqXr!%moYo89MieIa>MI<_#Mok@Bae znp~wdi@7+E4g~;!taY@^c2q2B;?cJXmWtMFM~KS%jXH5_KTGzM`a(_Y_mQX-9wF-S3$}!{S-kABLrYCPx7T=>uTx z-UE8mlLOCKfK5~~L41W#BXDagfR3 zYAYJ}Uf@_k(G#bP{nOztY5DzDkiS8jIh-gHLRXQx9>k>p^rBSy*={JyqkcrVOJ=2d zDieTGPlKBD4xuu2-mvyP+pO-jNs>RU%?>0|cpG`Qmwh@sAm|MJ;g>G_>&2}z4Lpx` zS6whU%ly@gKPB@IalQ)>0@}TG`Fy;l7%W>H1_2uIXckFftRG~ZLcB9`qkpaX^ zF$ampmKFet{Qre}7PCuAq@8N^HRnw2edJ%vuSksnbPMt#rS`pISqBB4db8F4ATn6Z zsh`|R6r=Qibr0Du&VS|Q+j-;i<@X7Z1NdE%d4;ZfHLF?tPP$CXI9yk?V<+Ju)g!wF63L*LD=2iHI#mWe8Z%iBqK50BwoFh^5M^2S=8!aq>JctO zmssBp1MQ_}$j@))@khUy6q>14Jv7c>+XwW&pp9ldK4+834d(4tkpk z2%4zOr;Ed0&ena^08fDc?mU~WPTNv9^v(+FFjUNc@e7wUsnmKXM=jYG$iV>11hkNb zRrXVR5m?Z?J^K0nW>zl9s0VXb+fnNcc)8%Z*1lyrxq5W|rG**G|01Mix;C9GSO)Tq z&Rr8ryvcj{fOpUXaA{?z6GZT!;L(arRJ9=vS;aan{+8uQ6n8QKgaM!uJ-{)_h`UP^ChSPH zxB#sgAg>_L9i*g_G$k5eV%;kN!f-&P6)$ilHT`fk`eGw|!vojHZ``#`0;ys8Dp4fV z9urHX8a#U(vh!zAgIabxZ9Not<=wCU@BpQ`1<0F&DQg>0$L#+u?QKamz7b3}%mX=Z z{mV!`yn2%n?c_OJi>{6mZ0f1l3z?LFvi_2>Hk%}-DKEm&U_ zd99vkP~?K379B9&Q@Ct|8uIs;(?Gge!;NgW@7)a2Qj`fT(y7&*9ypf~u_@;!-_PD} zSMBDryjhP%aCnoK(%jr!X~baK>R4g!&*I5_cj^6Vs|%nyHYyR6#yYg`Ds092OE_xk zTI!xQMCxjJAg*iL$pjmp4ggCzRS!H)9b;WY=4u6naam zx?Z>M*WK2du*-eLTPE;Ir>$lI#U*K-jAdatf$@_2Qy=d#vS(Uaz6{vzY6%W_#TCY@ zb0cSLM|ZGI>$Xl#kdR?zEbe{&MCz^IM>+1JXgxDWCy5Jw^qa;D4Ih(Tk4vPwOkXnh z+re+tv2&}E*NZo+&ne#kdhs6D(`{J4ET z0Vdq_?Uc>JKd)Z&2ClPPPe?L1*9c!BuQv*}oaVsLlJzi%?Tv*P{hVddoTkR+M{fTB z;M!fgv0Ut=J=bP4RAkf8oV{fwv^tUj!^*;BfLaD@hVtTx!mzbabrf5`MRxW?ZOLpm zLb$m)`(TknsAEl4SG4XztMpM{{R)iK;F^xa5VQ zR5$vbah)Mz%^H{Ja=~KJ+8zw1a{93=4>d@qJ61&RTFu>yS#7%%w^*DuG>-Svw zV`cV}1%p;IyuktNpAw_0Z7B0VBX5Oo$5aGpojIIJ%eM`=xlr#D3hY;GbI&Zs~>Ok`_)mBcHkLQ<#hNZUFw~D`aDLr|5@vf!ypXVxgNPjMs zeMUQRE{WImy>s;EQUM13NR6r9I_}e#JKGhqlfE8GHlK=w?66}xD>q zgjRk(dZB;^oSc)1w{Jx4B+aEg8C&&xdp!`{{nM)^ zkWy372Bl13900bxr3$5{Nu|^+Zt{j694DDY_|L!~_2#z5kuC$z9?Mu_jpEa!ZTuqTQ$LtYq zyd$_RiZChYS$@c!dym&hJ$H_|YGkmVYd?gfr97c_@#(Ql)GLlWjG^M+-m{szN_OV^dTKlutTWISrxQ_n z2W2^#umc(ro}xHDr&;whAIC59q_j^Jy#1WqHPv=$_NZ`Xhs;`Iq^gmKLA9;PnRsRU z{*e9h7pYf?QUZ08=K+CdV-`Y9t7>F@e1iJv{zT!`$^$1Cdy#%}FX}g&pidD}#lPJu z>->;#ecp`S-Td*uFR0*PiD`()ReO%MrF@~aQ3cJ{bJ_!P$f4uzU8*qeJX|iPK#(rHN>+|(ruUil@ z5~zlEs-TRb?}tI?4Rz@~8=4{#Bn1jtk=?fIn zdIC;-IDwR+_|CS3sJ};V2eXPg^j;(XuP-Nv-uvk*(s&Oz9n?P_;^|GEgHhe4RLl52mO#1jT@v})uB)(Gr79ssA zyf`GFzkTUl*t%QJDP*~;L}!Qwmw^8@M(rh0G z_IhN=ok*I7$wXS*pnz^sd$oDoF4%SwBr9B@~mGn*JRIhoJ8&5;;yLlvqQni5XF68}a z-CISBYu5|d8`|5k69XmOCAg9Ky?#Z6_x#9QD4M<(x2vPYyyj61NGT`aUYyWmQ|hqi z5@so_yhS}xM0h}Y1%wZtxWUS122nZ4Y3b>dhJBl%Z=jc`OqJsf>22d%d3cav!I6tT z60L?McE+!M94=?4`wivRM( zc|wWDkAU|9aWB-H9CO^xazKd(q&n!aGqITUduE1Su13B|3&3c8u3JN$%jpB7g$|0| z5Ra8X%6g{@@Hkz+eyvWT7nH2Hz{-qEP{OC<)Fik4BmQIIwTFDI(yg8%+<#}*F+=vY zQSDt1ES(Wv(EYDJW2H%+_+Ek?L16@Jl?z=-ad6dgj7jy*n(t!l=zbAxJr{kxD(Ym# zhts0ojjz;OR8yqPls!E?k>tmy-X7-4ZTh``$(w5e>eC$r0ALDq1<9H zy!3gUA*s^m6>Pg8)V?X(si^r{!AVOu-=%d~__KquXD^paHvvO^2!gj^@@Cr$RZhc7 zUKV1a&UT`ynz;S7CjRl2{3NyFQ##HJ@W!J#PpSV|0bt28Hy*arEs&m;VleJ{tOh=ffkx} zdim8WNE(Gw3O@-`(r6>a%lOQL@443}3>>TU6h(cjnW424w$>XbmX9p~A=Rpl+i-y? zD?4kVG4F#-^PS~kX>oBvd@xjB#LI<**-n<+3^1?t*cu8qkpvlT1x;buGg7YI%;m;j z;{)oMnK-rf*4EK#EBwTzEjh}p?LZ#2l#Tjw>@AbbWT~4M7?1_#%z28@-5XhnuFoMv z&cb^t`T}S1Wv@UiQ))l{V$4by+?|}=1#pg&3*|fJkncQAVQUJcK1^#~bgp!xcedrb zV^+4k|M=(mfl++TE{Jd>>E3HeF-nG0obSes@56U}4yngHyoPHv>%Lo*oAna!@z(3n z?4K9|bV>jrWNTZ8?{eLOF1+%Fwn+qL|7B{cZ@l*Nv*XcFI}T6*+&dn<`b}Ucg-5TF zS0_(A_q}*clHNbs+^uhnj4WBLhmXWnuGPe<68H<%>Dh1-?ro!0_(XbgEHA;nMT#+8lbCws%@XswCY&7p9yND6$}&|pjRfKl=xviobk#lKdvUjo zb>HB%u4ezdTK3;}>!z`-URTW~-{KJOKbv*Bw?#lr4AF+VyUQM^dGpSQ`H}Kko zHMlnG%A$owXw2TG+IX^Vnq?SZHdZHUg>Oc_82s;MVQ4L>TkVJg@z%R~RF2OunzHG4 zq-uaW=cmEmD}EO`UK0MtZ2Kf78XTkahPmMFbnM$k6yD2rCno?p7~JH`t0>q+-&FVYCq8Ai>6_Sa5Q z{vAEn8DeD!iz)y*X5=ACkN~Tz^AOf3WAX3a^_==Jt1o&Qm07KwglUAQV+k>M{te`2P-^9+>HtXVj;?u!UE`o(%=O##V|vn z2UXp(a8T|#K9L>m-u>H`Z_NK@=T!1@y$?2`CK!?j&2!c1L3_GEmIeAJVx2=Z*H_kE1nY zyeg^*kb}j5R4Gj>^(kA_)vgTVL~LG1$8ktMf4M4uAQS2Mzb5Wl{e>HwkepDD?IM!= zx5hZakiht|cpkRGCar;yXSC2Lcv8{}2`#=d;2T|}cDg3@zao4?dW3)4WDJ~uBxq7X z&Z<~pTIiv#?jm|*WqGiE5tL&QB#Xv8wwj-JAk`+vrcUc$y5s}bde>~zf%L2ujo&W^ z7-W({^Ub<8cc1(#G-J|Df#ouf^h}JEDSSVM0KmiecUZ0^T>v>$As@GUD42lQtIN!g z3Vp$-da1QgZv5JyTFCE_VEC;Y_i06-@X@XW&~I}pwIgK~`{53t4eN;i#0ee=5B$Yw zx!xF`AJ$DAg~Iid^TU9CNFP%QRyziS9D~EAy(pdH=FZdmVGkGe$lRz0YxKAcKKg(_ zTS@JK#I&naPCf#rzX{hlTeZP79CloUC@}x1Wv)vGbW;U zjbD1WHnQg=VMx;{Cf8W>3ls!OI9En8C?KL#-a4kKfY}LlTcj^ZgFj2s4fyM@6|uS5 zS%7Cy0H%;vKv;Om7sx$(gd~j0Y*M0)`BAdq^fM5M)H9XaV-jNG2P+KHz(S98IMMFZ z4IJ{v?T^Ib3#g6yaT;YIP)H_TeBfmo1)1}!`2DOt!1Bt#b0B4vUpoj^Oiy4j0p^qe z-$;%uv$O#U%^JIlKu_$G+?-&WQ&w(P9oRw#tNsg3?8MB97=y@aobVl|#Z2(^T%>`d zCATe!v!~aLwx{SE3*c*jrAXi=q5?soemhbnLXF71yEqOG;sZelYn2NK7cp@MiQh|e zP1AfAKOg^)F3raui5_mM;Q?xh2>p*wFmVFx<$!b*vl|r22$)=NYqb3U@al7(d z$N{UuWt2XvL*cG}Ns_ifjlrCI!(;aiz26I#3S}x51<@=X6@P-kn+>{a@3{r9-*=z& zT*dEb3TIpPCMtLh1wJ;*`~e)IvtztCy; zsaCwkp+$^xlqD$>^st+cE>`~-5djDXk2?1|(-IG+8Fkd0U@qN)pHJQ%{>C*H-qh4m zy42&_`o=au* zfGB;KKj3KsFG2JKhW47SiWF_rEwS7&_S2W1ESrWcL5e4i0y%Z6wY4i=)I$yA4v)kk z`ZKH+0PooXGNU$_``ZeAzh;6tN9^HoNK*C=L$ZItv$Jat`f6g-|IuU@-NWI;O<|KP z0*2!1PoBOH3(ZFuBJH|S@PiIxwC>3w>Ciq_Z`$n*Hy~u|qF@XhB+HcYV!vohE>$oq zdM@^X6h5Pom_yj?!}xtg=bRYrT$2_tKoWo^*DDig{Vb5m``gS*dvDKqs>-~u&>eBK zyFR!K?7SekTCYIgW3kxHvV+MrkPBAL@+Gp6UY|Og;s@BqOxS`aU}sJ!=TAF*OKoA~ z5_$0u(924tQSZXI?pZ&gfe=+V^Sn%%t@Xjr8oc4w6L}hdJMO=rN;lq$ia>=hU_}|9 zP2`%Y=vD-L{7AVIHZR)^#5LV$^289%=(?_o{X||bF)leO+I?N6`J`3=P9OOERNE_!yL&npbIcGWfBODug%4adXkx44A`BRe| zgTcWXV6e-bCb?Q0wPVJ=$4~=hKJ(`v-r@K|@?0gSRUKx1{DJoArgPpoxbE6yF(FXA z<%q2F@&n#vAB+v)TvYO6^^0{o0S(}fPhbFS+UKaKtuB5%H>v*k%Ite_?FauY*t3=# zsxoN@Aw1Y!xmdg?Qyl-r_jH^|)4&0E?KFl`0wJYP#k3^owN1wG^2fq183qsrnGDMu zMgj6{hx@yv(tJ<7`Ard*IT=>r4bmWO=sLiTLD*?N)(=D)U+i}|IH7QH06b%&)xRrf z)<4@1+3@(@ize4On|)v(D%@7%2osW zOAE`I5*lGRa-`N{pH)S##0FdSGlp3c8PFDzajXCVnv2}yw=Ay-U*ckCt$w~+FV~_z zUI|-hW63ovv*}&=!ll4!KT{P3`XR}HxQ;i)hYUE{2Ab5$P_-R^rwp)Gu>VkZf~!x$ za)A8|LJJ;%#0_uK-T9w06Tdt4u%l(y@he~CI};?V7F`0_L~Pe7P-8B`V!MU4Y=kQJ zoz*YvVv!}h85%_@SruN5XN|gwY%j=oyBW8a3DDvGhA8X1p_l1a9mx;Seu#RZ6jvR( z?I0dS+H1WDEz|dt2~o?*!{oVEnep(MDg-#jdR3oKJ!$u6o1y*LW+MG7qJQ_Cr4z`P z#jOVmn$DJgoDC13H9lQ)u5HE>ByMet{U`c@g47|pgJb`O0QBvq^{mmCjeWdWjFS?`~z5*H&1u zDjkW1YA`vpNVwaetq3Wlxx<|Qv6&F-g{aSVCi~Thqx1u9Y5t3OhyxErn9n>e1*8W7 zyRqJ*5m>#uY79uKj_nT7+#$7;JJ)H1BS23X@H;$MagO4OGAU&n1U4n(G*5mPrd7SW z{JE4ioSX`;k=jEj9s>k)zE_+tqh=Ao!fCt+w$?!ei3K){<<`5-8Eo1nSDK;ZX)dzawzXijpSU>8D}Bot@u zB`!9Ux0KtCyZ-!Pe(v1#aDk!tMnm^z?Th;#0h=S`K5U+*#x`1{ieWv|9+&665JT|g z+$u!^x>sE}`*7Sd7ySDthV<}dv#fHf_pJFl&y`70zRDqbD#Cv$nG05RBqo(SR`}!( z4dUE;!LD1eS1D#NQ3tRd>8x-Cn4|8)YVAS8Jsz=V7Mosj;J6^Vc`22iw_OM~0qCR` zJOZ1j-FZsplWSh?*A`qCW1ex9%LjM)$QyShNGxPo_bbz6xm#m&-}r|ArTWMkCPfTs zFX2x(eDnJJb=CHM_g`m-;}ouNY8UH_TDiu1?Z)azncGsm1tN^*zdwWv_S3oMajx~h zZGUL`_UEzKCxh>)RO~c?X32HeA2a?i?sMR>E&UL}oYi}ef)dfyH&OohT&tssl_~-2 zle#!V>edhqfS2N;_Jh$i{oT?T-9Js4C<}!#(DV0x*^c(5I1iYV^!jURxHdd)wK?|z zOdTA*%z*KkqbPC5x!?!e&atu*wi4kbAlIb0=JV|hlgW|s66MsOE52iQyP>vF81`Fl@z=hczJs-Mz zIQ;70zpMEIdfQ-Qt|+GE)S9qQee}dc2)joa*&Q&5x|;b`Sf9cohI1?>ceIaSQJx>a z(bJW`P8@&mCSJ>u32eMc_~aP)Tx}iQIP+-$BL5o0Vp1vm$(9Amv5KL70sB zJ?y>|WyOgTy#x}i6CZdi)f1~-eY6QvxpxdN=Dc^(lziMpK zY}c_TD`1ChkWOqg^$9_U>&2?=bt?S&!b^(1}F_7c2K4?2RB;kB8 zq=Il%K|%J>OZm&Qgp*eNA`drbT|4|SLbS^pu7uTvO24&~73T$#wAqIrvb>g0s&x$w zC(s10+?7|>Crj=;Qy2N}dFs48h;Tt;{W{6xc7W{s_fcI62kNVt|0}nYvLq3Lwa6Hx+h{^o`5)7Gr zPKhEm65c&eAn1qkhi1NgdlMY7CTMgw!uB`^r}0=RuE=2@x!qD=LJHuJPWhIll}W>t zSm@y1rn)XqR=MTx2G%{Co6U(j{I}5d@1$9-AHH%&e1m5Bt`ukg!oF?Jm60*5v|@sU zNRZ-kdOoo3e?~S!?h+8 zeKe~9^?a_!Tv0U?ylb$jSmyB2oHPxOoOfdxzO_a%rwtkAWTDuvZY`$5R=26dOaZjh z{R+pO0w1@4@KwoypFcm@zOubCT;&yNTq^ZgQL$W%f7NQns@Yy<`Z@lojj8D)_fRtU zSXGs;_N2zxM(GI~?qcHmH*oILY@?Uk*BGg07!%%aE11tVy;Jz^qGiv` zFP9I0S5Q=GpTxn8c6Y=PFo`l65-pHV%U;5M5 zo~{d9#OB90niiqUVedRP$A8E%gj^A4fBWu>D&yUbuQop#Z{A7IO>3EQz8P}vq)N*7 z8(QZFosnaWDfch>O+Qc0G{qe|#C8}4lNS(}=;(b$shY}!ij%d6Qx8~Q#Azmrc$NA; z#UWjWrv{E!`aJNh@+~MZmFD?|sv&2pku00@dVPEyd!&j^J*={t2W-@cP<8mBerLZ*qsDJgJr0 zD3nxD_ov^#J)4_VF{sx2E}Ka6!ecKF37yd=;3Wt8`;i}%v;+k5QRJlA*<;5}QzDZ# zUj-bN$BC9@+zIJHV|kuU7HlA(^S$#P|tck2;(SvigKO;gTeK_0k? z!p!7+a~~gKXvsjaOG{THXIdaQcIO)W3? z?(|MfqB7Nqj!T=BgPnf8hKJvhu_Kp2^Q3J>83Z0T2ma$eH{m$9tdNl*HyReq$R%(_ zzaNhFj=Z%GMNqI${UmuwP7X6SIP0q=B`Y_G60rx_Nhb>n3`TNEq4G7ibwZ98mt56*kb0k^tKu%SCn{S+k5yfdwfg|= zHw*gqO(7w)ufT_t%iCLw=?e!8b?mPN4B6S(r2XBkw#r0xxNd&)dug4h7JKmjV(+b^qW-@BUlS}qrBq6gPU!{_ zkrI&ZknZjj0g=uD>F(}kq`QW0X=W&iAqEES@%{P6=XbyNyVm{x-nHfr7E6{huQ_L* zy`Rs=-e(6^35$&l^g*My_V}mqFh{1QDoj4a<^`si#pL3NwRl}_qQXKhu`Nefdb7CC zEw2Wr$XBYiWF@@fDA4$VG3d$ZHQi=cKIe&Q=P%mZ@jZ?Q1PxTiCA$W>R-*h!IMVl> zUP??%itEa5>s{9O8Ic0}C!SZGbYp8ho-3OONa~?|UnQ^2aw~jBC{xtc9|B>D=oxTD z)5Gz8Ebu$`7hAJ8dfNd~9+`w!qwE65VX7*7bF` z&1Or^E!i`TvZwE^fu$j=>>yIb*D5qLFq6T_fMKM2mIifdnat1c(t@q7;@L4hXSt5_I zs%tAfQWCB&)h6rWUvi}AXc z#D8=x3g*X_OZdoqQcQU}XCN8d_bb?%S8hui)r zXHuARWeX>)vQ*&Y1XiV$4UJo%k%X-)c-bHM*=)+G&=jb@G$~Bf^`}akYO#Q(K9m3W zQ3eK6h)5H7k!Jfo=SqKP!p}~(`}dX7+R6sp4UR17W@o8Ol&h(8RTBg#JX+R(cy*=z@=J&wh)hQC%9VRco5fKmq$lsgajE zg)q(q3-`{1yMIWj9}tl<$Mbvj3($yj_hH`6YHbmon4Fw{Ri!eCc6C3e*5Rr0+QNvE z;IKY9+4N@OC6f{w!4R4 z@2HcP7`ta_xS_b%64^*rsx60@$k-Zf%c2cNJbUK!r!3_}X2TD|)6&wA;yI*5t7Ut0 zXn>EeQ68NIzRiIR`zDvYv)?OwAbeQvPn&mFU*L%?Hu+eroUs>%G!;IRk5qxU==>Ao z=^jLAy$8d>15-&p$$FRX*X0BR-0%1vj%~GAVWgL|zeo{5yy&s#4vWMQE~zJ;JpxhV zL^>jy|K!gfemg|@x(`|dwyf0U-A?Z=Aj)NAGbM8et1%n z{{4Hm?#R{HRJZTa*Pbw!~;Wmd02gEQ0tw~3G!hwzXiPL!Ph-_3K87_mH?o9CUM<m6v&ay75I{UwJl($EePs6ssS_gKC`y{SAHl~4Pmakcg-I1?nw{?8R=*>rEb1&u0;xdJ^(N(ozX4#a4JSm@5kqpQpQnngJL{z19r@z5 zwged5X|#l*@aaLVlIq@IJ6a|XYj{l0jm ztd%#>r`zQbCmQ{=xcUkaI*!*#%S`S(dP|a}!DN{WE=3M9AkSt^0Z+%gqg}l{)kX|= z89DSN!i}d!x?FF8Ic3gXOW$wOI(rL|xUU-+&$riOVy|wk?*_R6aDfm^|q3 zh?<|w8F+X?TB;@Ei9`g{)R2hDg9L|4rCE4w`_Ky@vu$gKPq0EmLqFL&EX(87*dyQ1 z3dY7kQh6>^>zKXhf-B3*mFV^hKl+Pk6lB}KN0#zX;f8csOtWMh{F*B_3n-IIuZWWT zFzqcKvFCAtaQoOT?fYwPU_7E{4FZ99q79K?3pTB((bH4I1@lO#ANLjz7+e zsMG6mkQadX)O7QXZTVsaj15e9oGRc|Z8V=qXjTBO)$9liKeIiH68x-WSPeEL8nfq9|Ojd$a|X|I6}`J6sHNw z%~o2;Agb_)EH1Y*4CcQ(D{%gLQkg`_03k(*X&_=~A_N4l61h0zmwtZ?6lNw@nYxw_rq#!8llf7=`3;6&xhMp#ibu}Z?%zgwK{_uBZkj+ID8d(yF% zo7z1nXw61!Z-8}NT{(EEB<;{)s~$9`;0OhJ*PgMy1TbD zb|U|Pv2l>$= zy|uv0o)C2|R*5im2kMzQK5wX=)kgeJHVJc;?t~{tAzA~!M!}j%<8%0+M4fqD zL^v$uk^26pu4Rh*+noV5$wxW-RK?k>R7l`qQmq2VCg zKtH2=9j@5N|9WVUk&&^OvaB`V^-uE1w4KZG%AxBCZt#f}Pj0U9oyQF9?2j3wHBoN; z?U{F+$IA(-t>)Dk3Ch%Je)msywzq!+M&DJfotyhdjgYTTNh9*IvgY}+z03-1`zjlz zZFJ}v>3cn6DomDZJA7^=<(2Zn1>u+9H82Ao2T*|u(<9jvT3=7gd(pN^#cqU|NQ|9l za7lXq{)O;0$7Nf`JV4jL`yHlA1+or)`~bL3%fqQn^Q1$S%nNqhS@|@C&@|^^RB8(sI1&Y`esv z{KCav_j)koyV?^avF9&@bn|2+E>~AGsRlNMTwTR0W%~WVkL&BkMRTa!svnxMVA+}`VT1QPZKI{Y*=96gyOAC(t|*eCP>?+EJui;vDYEFUB!TM37cx;2 z)tl2~0q<8pzI9`>8_zX$YIoSfqRT5cDgCJb?wTbhD;MMm&5?r<)DjmaWPJRr!AFZ( zH76@ym#U~(=1D*K8g_nvO9PL`D6W9i@y_n7K~MMr3-~s?`;A0$vD0v0{)t)yn{~yO2UJO_OHir4e1*TKF=q!j zjem5lR>v2p#MPqQF_5;m-pSfUC^{I_qSXB)-sjYF7aXY-pInDAvZxh{AaIysu>+On zN>;mL)SG`A;qHh!D#s+2*yR>pqhF(Ht#nG@*e~A3OKCa@evTuAj#@F(0D3M+H&!icnCCWI=0EK3B$$KG_gV_W72blQRkG2IiE@ zUJ|kAlu`lP>_2`Kn&r?p_?yq2pf{LsamRlSMPm|gs6Dh~W7E-TN}b4RGDIr~FTabD z_yGNCd(%deC7klUjIAF{Nli1&Hpna)itv@LaICgkMggk||Lw6uS(9xYru-7Bgj)6L0q ztG`4bq&5fkEJ+~U+VmTJ(D4y`o3c-_#c|hN@1rD6uDW7~xLI@?J@?HJ201I_K?Ms^ z?KVq>pJU0;1fQat^NTa^?%GrO+LgPEO>Hi>xTrfPfrwEw9nDu8@fxR`Z?@z$*dBFp07+8(N~5`3eam=onEsi!{uf8fE&6xqy_UC2Fj#sVL)xp5%uS2<+N z{Ch)Vb9!KUH?_?AK4sDI?XOB3m|y7?7uNFeo?#$NuoRxs=d?)LexBLFH6GZvLe3qe zWecf5&rIS>k-RK3h5xk?m?YN<%$t=^8HoiMUkfFN_IVVgQsmu@9^QC~8p68jg<3Fp z`Rboj^K0gj4x-ppqTj=1l?wkkfkyuA1nO|Vrq5S2-(-=rqLO>3qT$WiV-{@SxN{0A zE}j-CnX_K1ZLF{F?T1bEjWHdzCuC;6FI-Y;{O%-!^Y!H?unjggHl*Wya0MNU(`@t# zKELqU?_5H&J~@3uPuSEgjl9IgVnq@$xN*r!n@t=NU;h1(0g;;Xgj(*FtM zS|m}t^>PD>9^JKD<{i7cmp1$1`4fsvbBzKi=8Wp<`rx|h0yQ!uh~}WEL!qMce!~TS zd@u@~AYXc-ySpGogbxF#KyjM>7HZ#>;UgAJh*j|- zKXHxHH^YRG9(s=!WdD=5*n6$N6;tv#iiliKS`fbfHm9yR-{N^8P`p}tTz{^H@sL^d zJHwmMTo8>Ec;m6;thinmD`7@6s?bqDZqC}f>dF1Y&5o;W7F#v6v_4F#{%du*qWgy? z=f~PM;s$5+^kK7|*;TNJ9q(B)Q`2I^-{q=2MUAoXIR!gE_%~eo8x0--gP^syNa+HT z3@nFw$%n2~|HYd+j?t!IXGr)rPYETdkIHvCR6Z6FZJHltW@oFll_G3!r9bZy4Cgc8 z>JqI7p*i;Z-#Q6dF|&;(($y(f_EUSQK}(8VP_5Y&MpNa=IzT-YxcwwL5n^X-H24v& zoGQ_ezvjXleH!PT^+>X^$`#R;&Z4;GAK*ztKY7;p>f_Y$u@r{(Lx!ve(N=0By7!%= zhCq>|`I0jI9~A_IiEwmyg%22y18E}=0@c2t5QU5cb5!Uy`STsX&Q}S z&lPZ^#fw{L@=?_LvavCn+-m-3*G)>Li#iWlWrrqf4XgH>h!USj5r_DDk>j^|ZKF>-;YCNGOZooj0#lX!h;DM1tH%4Ql5$c#8CH_0`e2E@dXg zK4rdr-S%ve0_VCW#_kh@qAvtP^$ERV;@St_f}e_J=JaW7mCH{t)FyYSMN(A`4=cz; z_JAcNa6UZ@VxVGLj)ZP$y23XGuhs;f#L0c}9D8P>)K^yT%rp7kW+`w8lNjd-{LqXxP*sN-XFBW(r z-;h_zpYtXLb?pUb(=BlfC7(Zs`_EAj?sE#-|EWae;X63GW`k)vtK78SMoe1&S zMj-I<*5#6)%PfC#+0#%+iah;CT}#N!Z#uJx944vohH^zv@zipN;1YKK_G~dOevBYX0C46x^yTX3xjwl#6YyuNu~A%3!*9goMB{ zQRArcM32~40?V*<={9U{oLwg_77wicUJ?mbA|gyokFC(@GUGwwH`*MMy31d6!oOaQ zu%~ARKknQ#{zfCWRMz}OPj7oyscY4ko;;{YKS1ohWc(@|vOHf4=keZs!p~3Rq+f_9 zsl!pP|2Y9hO!IJXe4>XUs&{b+T(itUvxPQI8ks&k!_gK_3f5c4zY`4s%#$N`>#?t)I zZpJxr$=%wVAM`5Qc(T-*CmUvs&ygCs*0meRIqg5SXPanPw@wqyr1?F!#giKSf`H!b zQWd;o|Gr^V0p^Zm#s)atg+zHO^bsO9@uEm?1W}!UsQ%Z= zq}{OslP^_0y)^FCnl27%*`D{38rPxe(i6aeDe@uErY&IE@L%~WAY6gR3>zO04hdn_3LT%? z^kGFdeccoR<`vLW?xK7q*eQa&S!uisoUR&h=jN`=6gS;GE_M(I-Wh(ml#{RuJ6yQ@ zhs;V)cQk12SJNGT(+GI^;)S`zaSHKbu3Q3P)rG{3wu_P2j$4vjlI+ouT`k)r#p>D*Q3`}=Df3E7oCK0l+M zRh#dz6sk16e#Nb7Lqej>9B*P~hC4wYnwei+ZGz}jq5~$4ZC5&54zKL>;GL|%ko&hPe3|Zz z=8r^?iTT+6>vL4?rjHnlGXq1PJqob!(Y6OdcEPw$Qj+=;GOp6b#VKqIOd~BJF^Vx3 z3xfDKNbTdDO1&j|lrf1_YHfyZR9*bdkCikg^=2J$ac&wK5WSO2G=8}X`)_<^zOBw^ z9DQb-qy`IMUO=A{#96jPcDyxH_@h&s zV8)T5ajxnGs+y1NR{jT(hz>>yDgG0XB0LcNTfH?bL8CUruqIy{D{I1SC2|(&P5&jN zOlqxZ)peLfFGeRzz))u-umS@)K|!x^YGe7RF)$eLSy2D#Y6R{-sjL5bbq^MZZW9^6($n@a9`R4n~R< zy$GC^%&|xZ8{%ghuK%yx2@^W#b*|DKW7`vjs5F9_`r~ zNO}tYYm`TPQ4^sFudp6w<|!OxVxbwmwv0Moc@VgZyg3c zFB~3C^J1H*DcdHD`jcqk(oBB8nZCOiYBs}1!{5K2hn}`j)0|9u|Y~`h- zthep@Oe=jyTtb5P*%Fowi%)~-I8bl)mzv1k42~OcTRgCUQFd8trR%b~u1gst`uwaPrXwWHSeax+ULwSh?xeG20P64js zb4s_d@?a4o%D>xS&&TqQ?HS-NZZ>y}>;og0Z1Xt&%8yUoG`grdPxtBEq%Q!l({Q6b z6#=c~!*Lt*=vjl+8{Ou84%2IEZwt84q*-?*m;u9()Jo6Ae$w*IP8oflgkzk?piHj-Pxw`eGroZQN(!Qh{#L<84gTqv#D9YEGOi;cxj_4QK zO{uXlNmlxnC=SkxfJ&Mx^AZ^6sD*p9qzvx(Btxwt9`Z1+#VGB??av^C{#E%{(vFS} zr^#uLa8w{4+zxA$37eRRWjBdPhT4Abx-V7)6m!JMN%iT%>pzxViakcqj zAiVQ=rhpMy$ArUI$TQ}K=~v(#e~^0$V|kqoZ3ddBpol9HbzgZrvXEO!DtL`eS>slxyi@jY^ekk-f*m=BYS89cZ17_Z=1;8;L!c9t^gpMM|6?ayX{mu(uj!# zEHfofm5oFK^%t05K)b2yF18v+3Ew4gPa<8+(!i|4eNYUBP_nbLGgGGUdapk9Qk93O zTvfiNXXAVOIyuFiI3oTAc?!Vb;3rPe`kZN9fol-;-P@I+^d@Ff$v`2&}HFtR91{8k;~H+y&vk+DI<$ zyCFJb@BNbyy$+=8k-QUwX5LA>k#{&;hq0&exnuBoa#2@v$GPbko{OnN#Zyv|>`j2?z<% zwRRV(x{N5t&aDX2#i5~rFH;KzL9-&0bZOw384tfCo2aysknqqX!W^fTfu}9EIxsO` z*Y8pYSWe#Qz9gp$gy2S&=u`8icwcVrw-D{`3w_795y}jOxuglLgXNz` znVaTMs|rgTc|NrMtti((MVXsuk-X!~Q{q@hNtIT6@auGUx41OravT0qzzwwxR-oa) zTTod#Aw)9m396#orCi#JTc@wzRxYKgs^tDhYES9Y=b&hpqCn$=f1r*nd8ZO~RKza( zCMZgR5?q;Q4i=;o8Cmg$)bzVD`0cm9SlPU8NZIn`9kR$IZggDUJ}Cu-Zr_@~COi0=z)sL(d4mKVGvmJVL~kEpYDRQ9 z&}|+3jQh2$Kp$s_xAKUJYXtBNf{*d@f%#KYORV>650S?c9o=)@r-NiSHmiDthwW}u z94cDOHXBDJDAe~fxuD^Jfs&oyx0<<251@Wq2l@i}AF&Qz12$1Ft+X`N*Eb`^4`?b- zM&a{H_pZ|+BJ6;BHSBNSuG_nTOp5Hu`OLsLi=beMP;%zoTjd+Wi#uR^17e|oFt9_U za4Pq=%3f$#((WvwpP|j@XFtRv^QRot$g2szfsNDcrJKVw52ZH&$5N)nKo7%u@&wc8 zEv$3qWT7GEC&|5h1~qUm)vd2yF*L)6NHY+@D^ck#vkJY;X)i67UcxU?ga&Q)OPYktIViZBvb{*Bm=^B;5OpJrf)yipvH z6LfTREGgNWF23|N&$iWh7&e)lAPs)89sg=yxIU}Y?{0bnz}mnq;X+nct)JDRPmgAE zhlq_H^6rQ7u=@FHC@s{&xr(QDW!%f3VWGZgEIyIFbB21PrED3IcfY-+wjw z`v3pM|CgUfb0hYx2|`eW0}9vr*;9Qhqr9>*T{X3Hiaq!S!`4VA2?Ic1$3*%0>Z>j0 zjpk2vi57-A{k2{>gZUP~#lsUz;X|M0G8G~C9RKY(roR#pdGI`yv~|FHf#cjS3eY>? zN^&jck>1{!fvOAOBzr+^QvfB2MTHyDL-c~vb7=wp^pqLPV(Zl%vzgvd5>6)I7XiGl zP^6;H;SpeL$oHGug0=}>f=X+{2QVjv}=y54%zP$09r?^5{qG$ z)qH*Z=a9I-f|n8sf8rsIOWHxJdW9LG|6 zX&?DrkJw&f0^^2X01VJwhclMi$&ddjgL$>Z{_M?WGbphiyoULDpq=~of69yJ3Igj4rUlJyLn-jUr~5?X;hRQaGfufOQV}Cr7C5Ndc(WJde&qvJWH!$_|rzX zx!CARSGpc5n3JU`nmaFt!jUu?ILV9UussJTk+!G=;4E52U z0Vf5$2_cElLoPQs|aJ5JtIk=ibFcAEXaH5c@gno9l@_47-ukBgp{^G&6Li5E zP2Q3~Q9DTW)6y1j6IdFbSic+Syio6!pyNQD4>7zGok1|Gjrd%i4uSdvn;5kQ9&&L{;^zM5Vo}dKum?p&4WcAsk*7#-24R!V zCB!5#Eq=74_>9L1z?jr$cWHw)YV~#0OijoRZUtw`rV3daSS_=aV~NRwN$EVEh9gk7 z#mc?xAYD)n@LXKi9p{b85uN;R#PvH74COQI_XOjZw`MlBf5V{5ZySwfnys85^QLBI zKplZf`N%Ksrmy2?r(Ax<77^l&JUyzzo5?oGerA35)sO$? zos~!ArX7$1S0FCwqz-`_PwDp@Zl_~ww>XopA&Y?iy4X~l;5PXUxAXVZR3UWK$d-r41$YJCtJ7?7 zmp3c;?7SAf=K*+0DdEN@H@UQ-_%y|$^0(N6M;a=}Lw*UZtqli#6M#?pl*9oZ@!mW)pdS`o^gIB5 z;YeigCdS(yF~HSJZi+s@Il_!*$bbNiV}7_ERh1mVAu0bcBZQy#akb99A$6q`K5#xGt#t)E-%828JOW z&zKk)>+PBBw$h+rJbxc>cyy!iXpCjz-sz#oafm=|EBtb@uHRpS!>6VtWnEB{yln-% z`ucEM6NJ@sR6>aTcv?M?0+jhFT8CMGzv>tlH8!`1CzlUtlfzW6Hp?83PQKl)0@Njrr|gb?@G$-wgH2yC06jnZaJRgwve)T4EB$pxbUnh<0~Wg^3= zR7|NoiBdsB(Lxu)o|mbVbS~_uV~SQRcwhr{Q7d4FV2K`npA%}pmHBy&Z}PK`IPA_7 zv@M5bO_Io&lszIF@lqTBqA4j0G_v7wOZIs9yo}%gT+Q(ZUN3AJgt-!Jss<0&?mz13UDhPBS_z5C zgJKS#u}@GmKts)->5h&eE55Wc1Gs#7MwY0ii{;CiT#ve5fPE_9)tC*?ySR{nU=d;* zhekbNW?-nQa>}MfEH>3?)=H6v7g%pW+}yZs^nTOeiEV6dfYIP5;PEe|4$*jXX(r_f zI-g9?jf+1Bcu!!!lrTcX_Pt{T_%qJ%BOAcJJ2@gL8j&Hp{7SFO_a_~GoeFb3rT%7_ zYx(cEcpfc14b6OK=S17m?A+Y`hIF4pBmjX<49h>$Hb>%#%TJ`=CL)B`$0oySyPF6ZpNXl>OH}orL+qJXRa~d* z8Np@~GvE}QtA*2gm;pg*c6jQrfARyWF%*^};l;P=094T6Odu_WcaiQ+I_QCK{%m)i z+H0a?ramabB?Kt8O5FT2|3O(tIM;@Q*YNQEfcLe^Wc?X}^&QGGKPF}#M3Lf>UFYiy zestJ>LESm?kMB(_Hi_}^dkkv6gDw~5Bmw2(EFYSwk zc42oA0lC?uds9U!EDD@Dl|jiVDPp9zjMuTnpA%vvNJNuNf`l7E##^kc2i74RxHl1` z%i?tyk7~>6S7Uhf&rRA&<`8grUW=zQaA;6*cTfreIlnf+*Lrc$P$}%GV`tW#yNd5e zIUmW+!Ex=r8BxoHeIia8v9(6>dyS+Vh%17ZwaQCNGxdGNEYP|dyO|n~<2I=Cl%u?1 zh04eOg~YZ6?&N=y*odp(W}bp&!%2K&JG{8qiP4I4&+BRScpm;1A0zCv5ghDC$0sLA zf+p{sC%A4-tc|>Q&WGOhv8xhKV>x!lmPl<+aB67-XUTf<10tB@=g!lvPM(*KNGrqlF$cYS}0NP?wSL_RjcYnF_07lU$C60l7;*9i!VHd zyfz2NR%7Esqz0sas)x&g#6Yhswa;FG#$vEJJ!%c*~ zY1HJ%A((XqRn?T}KT$&ril$iZxNkBl3l$qM&oNrFR`mruuIwM=Sb{L79 zFzNGb4NsE`$?y{w$07098J+}{1Aw*VQUw6*V=*_Oh3ZtEAC-+R;<`y5pj!+&vBlpS z8Bfg>np)XeCtTMCpJAf11a#a1Z+w&pP_4cL8~uyn^hE##2aT5?ph(EN(K55tRe@Pp z?(TZ;9{6z*X<~c_auRwX;Y}u+JP-uQo?O-cC(O&-z~nOebwwccbh8Ai)g1fz^Utz8 zliyoJJnrj;z(;pr4*_sGT`=m8pWMAWJ0>HFwU(MOD8{btIU)CLH9osuMYTpFc839N zk6LgK3IRUh_dvja&(!}``2yBIU^=1J=X9*_-B7dR2$E$e=t~Y>qe|-4uTV3)r8L(7 z>!1sJT=j{vFT8)(k|c{Fum)Us18gVIctRsbHau`S;;0ST-J`;hKq6Q_qrT&aV@|WC z$=caD-*^qM;EBQEa0edZSxBUr8-4{4!YILVQ8pGoiDU%<0RGa9_2v?}lGOwjFHqkA zwe|%#rUwfx)GoRq;7+Jr7N7Fk+89mk1W2aZcnw>o$BoszPgq36Fe)xeJPk3`0c@PB757^)ZyiQ z3l_>Qbfq(^vcZcUc{_{GM(2{@__HQIs$wpaiosp3b^A-`Bp`u+&aJ>eClWr_351id zlKSq;SO&5*0%Ghy9a1gUe}xRYbIDga(aa#_iy{8e93Wp~m;blP35RUfLE!YAy86q- zn^QQltxNh)S*TG)=jS92DT5z{F$sYrPLYCcdhF^t%660ns26gnLUWZ?Lm|~lL`0V> zqCFnRw@^jg~xk67kfBDD+k7 zbrgD6Z0|4-RK~cUoRbRTe2||=;y#f3<>*8iBdJ`8H}f+=U4oj?VObK>8PIp*c@eb1 zZ0uF#`K|^OV)F6KG|AA{>g}>gc_l+J%`a)0uX*}{nJamS!{bdHP&TMp{<+*ChAeS_ zIFG#n#$*|&E-`voG+68&iRIgQFg2%3@L7z=iE|(UyfI~_;rQ9f@W=fOsnYM{9 znURT!iKMkOE{-6+h>0MCYNu4djmKc>=k_zf7s)rE$-Ca;pcdfhfW0OYs=PeNy5u32 z1?(%8;TVpt*NNl^ZXWj5=Ejc?nO9c}peb|vzRnY@Fna0+r#b&>fXZrATJHM=x&V#= zw0<+HbBXU`C9VfK{7(ej8tg=N2TAV0SIx9y>K=(!$t(O z7)63KX(#d&xYU3n*MYhfl;^)bmg!FQn#aCD(}>BZ@SVmk)=T16@v_IOY0g{CUl;A- z2PQHE?@sksnM9EAw?e^RTxw7Gibh`+bm<=!a)tm2{ZT->!Xzzy zm*fz25jJbM0TxM-)%>u2g=<&gebrK6kP$S4ep=8Z2xuG7iu}h_ptc_pQnlWmxf{ka zDX-N#d4QZKBc#-RvQ`^q_qanv7$0z>pmeKTGKQfKR^E7kCqF+rtZe;>RGibVr$7A% z_uw*IqPrDa!hPv03;7t6o!|FWbQLi-A}93GRCG3WhI3;hd_n$#nw+@VqaB@UG*-82-p+l4YGb)M|9nD*z z##mRVX1vLO!fEr_Dm7G1U|{g@=~F|wN*T!{wF;|(+fBn}8QlnE!Xdw?->gxg&*H2s zt~@nfy_6*V#>mX9|K~|$YN-%sd%R+BiC=O;gf!JDjV*bbk2P1R!y1Y2N9*x6S6IqWKurE>J#N~p{3io zGK1ly%W@;u&-eY~j@E@^>g%j^`}*BUCJOg9t%^cILW&u!0GjihC7F(%zL@P1V2D-A zsHB#v5C10?J~{3ub$-Av23i!6aL(Sb72(^~|99-%^hqA*@7&d{uDNhI(2mnS&MPnf zji|{6)$(=(JyrPbf@fE<9fsJ&Sk*Osl#C(d&aY6dRQj+GzJ&bO{Dsx#ND6nmv7BX_ zAA)Y%>u~4>!BsH~X5?TbY~0!haEy=A(hQXck)ZDz^zFYZ(^0#ikEpGs{MJPk9X}gs ziA#)kdU3Dscv+!n+B@y1qsl%Fs1XE64}dvZIh2wu&hL^5w36`Co4!tPB#(`aF)`um z+#Fa@aH`_XmOv^4b1kO8ID&8AJmK*toGLnEY=svL(W}|UG0IynIxDEdjSLMfr>fOI zb`Q|tpPh|@6z_yZT)B?hc%#3wvwAg`Vk07ij(Ht%=8l+t9L@aQZoaoZ;7d^&pLRw6 zw~2u4de99Vt9j}tLOl88@0ka=QygoFRHDn1pp{^@V9*rO-TM1pyUOb8|MuX1v05I9 z%~$G$lQ&jK;<_WTA>};($2QWTDvtf6j9b-sJ3@Wj7<|~kn}NgTnxz)$9568%y8F5$XMsRXqW8S(oYWoxHt^R?5c;*{wkW&dS|5C_! zd%Y0Ua%oUFe|~XHbMop0NH5|M2dd2`@(KBkH>+shw0ojPr}?-}Y2apMe0v zRjml3D%46V)%H4DD(IcOlB6<=93PR-!q8+$X8x4ON`ejB_C+tC&~jETKyzOy{^Q_B z0aQS&YV_Jd6rB)OK~eJ0H+}YvspS7=y!H{6DrZp8s-#+`{otXwIJBR&c$HZL{^qAY zf5yhv%@&3l07tp5U6l+SZHvn5{nbz~$t&KzwZh2@tF;lpG=S6Z&{aSjQx)WT-d-5G zP&+#?;Nkt3AQ)pLm3C3^Df1SSw%>Myu}o6f3nB7f!u5?NQEPd3 z-Cu6~@H1R;yFaK{;Z|%R+slokSW4z6Z1QH#O7PiZ8X%jN*ExW(I$WT07AhqAd^m;2 z-ScKZHF!xxEr&rB_su1C#@0E&t~>Qv(bz=lAMuy*@Clw;i%Nj8HTHH8@2srjG|Uvh z1Qbm(15i;AHD2%-nnrG=W?oHOsm5^p*nY!$jQ0FM`&i$u0R^RCkwtK;hbkust-t8` zyZTLEn=vgH9$iy{^`5SOsFP8y1|P;Jv{!K#G)BJ9`S0}}tvUEdTZ{u9sr2!GoEv*V z-`3gk>&@6MQw+5zrT1^E9KF|3P#DykXhYFf69fx>f%TDp>O(ZTz7LhoUA>k7wcr66 zB|!+>MKjWofSx2|_Q!j>9VJn83Li;zVU1?WzGPbg?izbI_*9O23q7E1(agLuLM{Y! zl>i4o((P!pqa(g!<(^V8i~EK-#R@rMeNcL`*uz#j}^( zFq8bc?7LoE?}eM$j8G5mYXa)ACp3|sKaS*j?419sbo{aFb9#Dua9m{eoXN-x6=_9e zQtNx2Ero%~XnW_StH-5>80ZNCUg z*r~WNq&jbo=bnq+&5|YY7?VyNzH;~Mw&=_91|84`F8TdIE;8|ta%>2`q}NLvy-);L ztHYLzLbH*lr=`T_CQuOqEWJv3U=&EdC-c-wbCM7oqtr0|CFpWFP_hBl|G;Ye5Qr53 zR#7ewY|s1#dP90Fbq}_Pwl_8o5UVSC2hV?#5sxuNd$;j>J%DGnRZd&1zxYddm$3rE z+ns)R#Wq*=da7;d!pRr~CVjB6>$bQZ^X+XM-$rL?URTLl+Eq}lf(Nng%y1bd71Tj6 z`@xv_){&tSTtu_|Q>-XZcLh9BkB$p3PMwDVd+&mnsWJ#81-;R{_LeLy{?EvTbnPc4 zX=4Ql)l^jC4pBM3+BHC~ar)%}zovL_<~C-!WG(0o_RZEAm&=n(%a3C#Q}g9LfR23F zpJ_Ne$nr4ux@f73_n98{3Qyxvdn^{!r9r1{_=$=hEtRvH?HwcbO~A{XCcKy|#M^MH zI_L=h)r1*sw%k6wYYz=C(nAnqC0-0@BeVZ#Bl`La>nVdz9(kSg@4PF=@0laUt02;w zMM(ZsEUu%XO$HL5{->MuzX_?D_@XI1iP+$W5UKuXpk zqCfY}F~MjIT5TU?Gm{L3ZdM|BTGJHsQfN`Q7Us~DsjuBx_V06D`t~mA-JlzZZ-kNk`wYtDo2esgj&G z4fJD5G~&rY&x)*)!q<9+)0c@<4{7rZ`{*3l+hS-A2whp-W7nolKUcOX}46>J~6fFP}M_k#}@IUr2U%8mY&1Q*E8cKd6X%yHS+{N<@cyXVS zpKH?|CzGL3u=VxJlb*{n8}&z)bJhE{M<-uUM9lHxP;xlHqSoglU9VRQBq*a9Ay;zj z5*Dgstb#t*X_hjwQU11T2Mh!(YG@lcGp3*S}9iuJt}F? zFH?XOBt`=nfbxMfwck+(4{MFvoRAJ^Q*YMQjm@sg4>*+)*-;utYcoX`9z^rU1>DF7x?+T`~(PD6qne0vx0>Ux&ACOYftx}pY7 z-D_B2BSk7$kkFXk147(%sV>EH$xUBSi1v8$87(5Tp*PNYV^@nNH>{?=dYJCcZ*OnA*I)i$?7d}Jm1*1lZKEilq=<+J(jijP7)W=w(v5V30*bV> zw8Wyj8%1fUMT3CSi6{Xf4C8y{w7b7mG7*Lj}Dc^v!x+c!~Lr`^Qe zT^lah>n_hO5P(VqXkDOd?SWf}dTf4r`UE$nhP3kfjrwmjaXICd7x5lu7OyqyQ6K6t z)9clCq{@H&cWXlF9vyG2nbDCJ5eO2*ATtC7F1i*j`Q`+0EWq6d28GqO zD-^g9jg4ecd9U^Vljq>p*atEydKlO_(rPIyTaHXyj%n1wuVZ;RE?p`{d_t;SX|hG{ zRjM5*W))Fm*S$|?)Y!loMIcJmM&6432r6ip9`9^%LMvK2Ydz94G<4FGlL-I{?krn8 zL_|3JiOdBB`%r~KF9zrwO$qz{<4a~jT<8>A&;sx$PJGq)x#z74LnwITv=H^TC(^{M zhh@Q~{zE6OjN`;VbK*Q34oD9;Ig77%pHNh-MVWV}-q)%hakvd$N{7w#)kJ2)LYe`i z+??|ZMAYk4{#O@KDN;8T%}p)_6C}O>xP$BQu$gwEAPDEdO8~RFTi?mz_8DH+=}|do zT)=ugJ=06jE>K`CB+;Q2OnK-R7L)2vF5%jUq0`-vk+0nK5abUak1f3e1*>8*K!rz zll2IH1oMdAo}OCwsnDe;KOTQIqkQ}lDfYgJ5M6{l>!KFAAHYAA;fVF)JhZ5?n?J(u z1$6yNUt7kRX=yEbtGqy>9zh?vC3Fc#*5p8Otb zlmY^S-Q7cdeP*!0p%TQS!a7=9)m*XAf?*&RPbIU~&sA)&;+5`vJeejW;&a=kIT8`m zcw}~9KSr59;D5{GAWtu;ht5HZ>k9PkVPwAu&KqcC0$Py%NDFWb0Fc>de8AAO-!tU` zL;ZI(z2eV~ItJVIPQ)qcMhj4e`%MxEU%^SB8A7volZQ%N%#T^=n~HFIdprE^jMA|~ zg)E;2#_^g=>+S1%Z+d1+#>N2F2v{fH#w`|^8KnPgMwp?s+(frbCFFk#U*> zq!3*wl#1_3r(xot1-zyHqt&warBXq8FvHlGJ!CkNV;}^CyPUK0$^2R^pq{GiS6D5+ zZd&Q4^=i+~&4IM^={{bld6ohfk4{;>jlFeoQAvdOE3~OYS&r`DV1E4F_ie2NcNpdR z=Bm`Z%}rKGDJ>$*(2m1rLoZrs0W(+)z%ap-)#Y>R^G(T;#QIUVy%M~(w(Vg1;%LGD zHS&b)=1-GED2CT{T{rwTr9#7ZwhO`ju-L@>IiI&u(hB4R$jxsFfya^0Y5(~7 zgBWCI^6Y&n<3$CVBhu$XDw$(f+DKZ_7c1<2MP_IXsi~e=IiQfGCLDQqCWelI?3w+)lH63r&NUbU!XVdIvUu^%7!;t_gNp-;|Y= zeQumtFiCn=dC*d2yYVYa(PE%N%{L~C*}*BO01^`tsPHl2J_~ZQ((OUAsQkkq_kaM6 z-@XO}z~hvZloZgu22FACY=E1=(A#}ty&WVRnEsexM1xsX?ZHX8-teG4!Q}uEBBGAg zj$_@ygY%3IhlQ{B%{kcaB_~>futf2KF2EZmn4{f*qz6r97>$9i5?Wmyd)phS{#NYQ z7ROx5nf8BVL%SLFUOHM@nAEqshK0OXnU1p*sCQmIl8Y0=dnKcBc%Uu@Qlk$Oixj0` z(*Vnjh|6A1iNgD^Fw(>qIsUe8}xckJ7v={g|*f-5#HSz`gv%$V%;~R*j>Y z8r`KA3&r8_9u{hwQ_9wt&;|w|dMS=4ir0nF`94WjFVDl}_ul{u1F)|6wp9IORPNBS zMx&Z_a9j_@rVl-NQMfkXg{XI*(t#%|EBgaMKUWtoz|Og&IitA@kTh^>z~=QR=_izY z;*lK@Oy@;q`~0*CZ~F7Si;mV(Q;La?N2|Y2j@Cv2^#gVI)Qq&{A4Z6&$>6zZgQ!T% zUM>F7VoQ?RlFM%H+3u4fV54^h#wJYA?u5K`@5dw$J*64u->`uJ?$5CXV{7Shvq05q{m~nuS&V@I7ZSKboXl3YB8dmun)SP7&<%6w z!7(x2dSg=aDFi0q#=8+z?4m@ELwCh+zI=Es+Y1ChG?xktd>I)(LA)=(aHRI>?)r$? zi7GLEzs5^ZYrouWZz;dWJ||yY!^rV5VH#4t>k~apK$M2KNN;Q-&{|cY$WJa7v?XiQ zLGWw#ZDONb=}-Mo?!IUn4t)xK>$&F}A7ab%S{Ua(loV&6w#9yRJV?pQOgOz(BBuL% zhlw%VHon2D4(_SDHYA^xt3x?o3phHeb0|>yWK{mhL;lOr_uy%oXVwXZ3OlEowTZAg z+DUQw)Za}Fk^HHnFaFs{u~=|Q(412h2K~i`$GaYQ7!;^Q?_h_IUy1#7%T8ddb^J8? z{8o*>tlIG(%*;cfUPWgDdUY8-Q?lS@^-8l*Xs8MaxGG}!3{ujJn`Dg+pu^xlxZfDu znP6S~ZJm(5dgfFg2L**Lkivkn$i~9K=dhyZ6-%m7t8*}mzs8o5*P_mX(_a4EC(|5H z^-@+2iy}j92~CXDkjKCJKBr{x#=)*2GdlZK!^E6Xm8!fT;~DG(SWIWZ*L<+K|7_A* zwMZLAE?D&^2P@pCy5p$O=FyQ6_l_#Eg*&!C#|PfCPqBdhzp|at6M!Fs{%Bu=HPSVX_=Z|ZiGH>;I6+M+5Q*X!r1rw&%go!+5#SL;USe# z)FR33w82ER!$$WHO=IT7e!K2dAFyL`etRDtBL{QA{(u=+m{}u0e&h9HyX;SP zEL$~)gB#!3#m1_)r>rW09GSWJlFgmw*VX@&Ndq9`FQI?xe|*VU27dl$qr|BXvdFB( zfBXsbUkNUMItP;8e|){X@PGf{A5R00xc{F$k01SZr#@)Gr~!q{EKg6@#tTd1O|aK; z?+i;1o|@8S*5p#2X<8n!A1*smz99U3`}00kvbx@8ci~@th^)~Z)2KQ!;b7$|;=esf zLGuPYZ$Z0NLavihMbZ&rkXC{)%#k<27_a!_%Xgp}KQ=p*fNs;}OR&WL@|)9_^b3N4=N;2I-pK`sL~I}VnUgZ?ORN35 zFE>;E^fM^;r`$UxXTt`g;N{t)$;l-t_VEIiQE4|RVxvtNqeWk5Bz7OT3s_tD1*46- z0|F)DZjR+m)F=#|esuvzsQ=_=V4}@iyvn}IpONHKe=I0=2F9XK(3XT!kl_HJ)n(6Y z^ke{$%8MW2e{(5bV9zl*K9@pBcC2cX$9A`?3fsU7A8_kSzFu~ue$K$Ym)Vw8AT%G^ z+;}4?FzAE+SRIHff>;Cs_-X@+QgU1B97>+2u`U+j+%RfCTLMG`kZY4*fsbP*wKF>Q z67)uTdwU7pPxQ6igH$vIPn+zz$vnpKILcfS5rwDo<|6v(v~<5crU1ebuvdCK1YB)* zV0>MFU;w~7;Mf7#6)G3B!vw7U;~&9B2aN@2fEjc|3(AHIJ{zlFmDwkF1Es3d9v4Vz zL8wo`HFLTasca`O{o=uL1JwURy`2Mv&{+ZA;&6p7?ApHB0zJgPsp$Oz0Mqz?prU)^ zJ;;y)nY@eb>gvJ*B0c?NdpWi_c$M_QW-|ap=zU=Nn-0EDxQ@VQqLse2!c%Yrh6xhOw~~Q0R7mM*@?2Q11Q^as{!0lITMhTisrmG#tfZ zFhbFbfn%w>^BCI)Zcap-W@H`xjlKPiFuHdH)hmnv3CMPePhyQN=boJ8ntw}u?C4-f z&B?FbEcc88YY1FSK!=6r;Uo5Nx!1JY$LpzB`L%zR-q+hW;tTEVl`ah>`PjZv0>j0M z1;4+?;li<(iLT`0P@NA@+c#6HV|O-bCm1#PqY@|-SoMeWO&5n)@3i%P?kW+L_e&nH zbF%>u6qtSIh^Bi;Tshng!0H;Q(#!;qf2mf!l z#gXm>auC;`9Q-QR>oX%mjyK{i=-WX2cT&12ij4n5x6X3HSs?F|0E>hD-aXg7^}U{< zBLMD&jvD->(DnZ@VCRl0xkXu&s7Q+TSRMK zg%L}TCz3CvJ4^di`0Qmj;r9OkQ4fKRII(P{e($XD&fB*p(0}>ZP*tMf2xXXNHD|hE zsv@yFpzWer>&nY*z?M7;eGAb?;zQS!h$uquWU*n2WxLu5bFy$OPgoj3L;cO0r#NI| z!!_oC$=~j_*MaPCE8u#;j~xO~FGU>nPo6i;%{2o#cqa_Ul`iCIR(F?oJwq^Z(D$nv z|5Pwp#FrllqV1TVySA-?$$h4Qsp$TeI76{k#65WtZld$Dx6Pb}7T$`|Nc~*M5}=P~ z5Vh1Io}$WL&jX+*;JoqDkMBqX(#cC3Q{=GaUOcN&8Fw|U02xm1`+8EBmXBW6utHpJ z$O!7HMdEAv;B#PP+}dsR0whP4IOYZ28les4(NR&YdLrDLw{UMJ#2tPI<9N0>@`g#; zG|jC?Gno3Z&$cx{H%IrRH;YRK?&_L=ngi6ycHj`XnpSEe;2LO1*PQ% zeg^4Tm-d6HDbjmRlOX=nwVcxclZo>f4rBn>Ep*$=f0u=J?Ay28yMt2upLh@t5!8G9 z*LOi12lvCp0cN+|`Ji&c4d28LFn|S<^4Ya*UMre9Fqrj(PLjj%o{O<6swJ2j>~Y|q zgJnS*e|z)4>F;~-yiL-s_(P}I(5+HMJ(l_CDahT&8Ii-oy5pXi3roY@-Mfp?0wbX6 zBXi`#qfl=rT9mf~aa zM@&yCd6aLQU#DYsu!W<iuo2wL(6M3nk{gvi6?c ze+l}X?cb>qKOl4|Q0{u=r*5W{#p?944`q1Ct2u{1EL!Zp(Bdj>f#8r{P0<~3^Z zNo>0N#o}OsyD=CuSEE+O!iQSwxIb4MB1?e2OK@1=(D+gjy11J4-gV>_pVJ6H`3@`Y zn&ts1Uzzlpbqre7$!!A}E+E&?u62HHZVvW};ay$WcxCYIHh1fAE(CpFa|DjVQ_vz; zu3q#SK|`1BylC#k+T8F|&Zlmqj+^gG@_|H(7uojEj1}8?7Zz6gVa?zbhomadM@*UxJtr>&Csf=HBs|ttkH}TujW3t<5Wk zu4jdVo%VvoeP|!K63GEa1Z;B4gNZ6=R6w``jKV=5YX=)< z_TbU&YQ$eE@6ke=&!E6eouJ2JbkbGfdP*sp#D+PosI@XrhP|H}UHQGWR~T;hP9c#d zy1D|c^Nu(UWR0>iH)j7?pnpmd1p1ract51FuGoNA4@npsu^@4a*KS`m^m}G_eNl@G z(|OXG~|z5Ca?{JVtznx>P>&dqR0WGSAb{kksInZt!=W=>kK zU9kN-MTuSn8Do)_ieEzQXBx?!VoSRhnegfwqO9ug%T06ALbP^&E=Gl=+<7n<8di1yHK2pADFwl4CgU}9(BLkRrMU``9wKKcr zttTFz2M01ObblkX`O3-pQt%*Oir=m8TYf}z^y}BJ6#;{P-p7SuV?Yo!e2^l%DxC|H z6%dj`NBeF$-@^QC==q4xKOCJn((5a2cB*U-AZNp3q^8L49_2(--k4a|Lpgjzy5Wc0 zL#v}*zYiGBqB1%jM^)&r(FqnW~$pcARI)D1q3FRW)SZNz3*@SL;sIQ*N$G&>(j?$BKqJ zPcUmx*YZRV7OUPbm5#kL2>6#rmr z5Q^RTdT?5heap)AskSUOh_p=sU~~i_W0S04l45!{9pfpwnfA3IFBl0#e2b9F8u4_I zGat1F&NoQn9M?BPQn~R7fn8o%9qaImT~59HCWeiLgwNU!f#?9FJ+f4#Lr#Ho`1-XK z4J-T#jayC;QG8W@Q!n%Gi$+0@-9PH9M%lE(@XVK)t8ciN$Ol?ma{=JBpG@NO`I31r zIVbbnK31zd|3dg_1Y_BLzbfK8%L@8vtN7z+yMh}xhTEQ_tQbd2N&9%nLcu3DNM%j- zBA&(#waTnicWUvW*zB+el$wGsJ-R_)lFEEdhIaKLJ&%*QTxORJ$54jr?NF5ro18X< z-1pO$Anfe>O6@AyM{ZZW@}wlIL@lp|5&My2pTl#{1GhWrBIE`zPAJ*^bN_b6#h}l) zC-J>{TO_WqSTZcpUMB>YljSHMo-Rcmwba|O^A;CqHW zvW}n80_e75IHe^eRSwI82ph6juOq&B_-2~mjFe<@9r^hBW-gh%3Xk~sbd62rc_Z;< zNlM%vkLkG+9s(M^j#(q)YZnxym9>?X?~6mih*sV@i$%iMA8p6cKYRD*USPJoDbC4J z*!KA<2VPyp{e*uN%@>f_^N7Ehjm;_~`#%Yz71-|;$xm&b-+^s)^Zc0`Zu`w}>oy4x zbD}2s?nk_H#cv(1KiOdk)B3C19-~dlDC1izbyZbW-mO|%T5yjFd2;%7*&EDU&odw7 zdc>U8SC<*CTqh=uWjBuuSqrU`dIGr|z4hS?DU7CH)8#>Z0K?kBlLIYIcKS#9MJ#uQ zE0Hu0xGO@HorY7?)rZ&jxM6nuP7~uVl`xMok$b~AE{K2VCQo@hYMV@b5xNF{vbXDn z4?*s(}1<7!#(nzQ;g7dJ4Ko&gy+IQyA^YzB^zu_lhcA>ZkJa^U zvZSc9-h)jt0D>H%YUM=1oc*3^ZO3lOED%s4hKCjIb9xz3!K35Z+I=6|zaOu-R_Hu?sJ# z3=U{7uhB6Be*7>N_zp*|XT@JPfOr>XsF~K{(D4W3ogB+2B@Xw=?+p!SoKK-CYN#@H zPHF_0HrRCi;phCVqz=SeF0WecI1=iqkrtUP-+Aoh)ZTH}hst za$oOY6t5nwW{IR9(5vSJa1z=e(>ZUl|MKQ7e0da&*iqTqTyioX0OFxV39ykAFVlK{ zFHn(ISa01)D)7$jOOd`oe3-Aoz)#}A3mmfwMHOJxyXo^De-pj%s+GAVBK86E?&>ng zZcDeS#I!qZQ6IU$B?C14m;?kEi+2 zeV?gB?D9*oz0gGMElfLaNQJrkI`O-Z4B+E|aeYR;hGs{vj<+4%qvljM&ImuY{8unGg90+Isj*<Ot1bhmuC6dhTp|-lijl z=RdDIG*9zIc?P|F=vl0xL%fyc$0}sp_O6_See7D;ZJb;UMY;O0yGtFzCPi7(zZJYY zH}19YG_>V4JdkPR_y6=PW&PDf-A_v@iU|=JYAmgIGI`Hx+Cw&FkUTQk0m_n_ou%Cp zAu=+>Lw@}J%P-GN6UcYaWD6`%poIIlB$bLkq36oZ&^7#%I!!;e1bT76C4ixtDQd9L z&HG#17SMlBYWS*0Sdsx9lO9w{m-fw@wfC|ajbWJN1aw153({`$p%d$K4RIU?q}3eoRDP`t>=6g*rv-o@E1UWA+P z<5epT=+`IZB9%l9+2PLCe*ToJ2NF)}FIH+q!~Hs&NLME;Re*pDdMocT)b7gID6~uO zUkupn8Rh=MusS3uJz1n|PA~j^$3G^3l2<`f+P<9VFkFdC+io9)muL#Y2J zC2WhBkjzbr(0KYlPccQU?fK2d?zFUZ0W;(miHEzbc$ED79F!TFMvFlhCnLjI`bH3E zgAz~eV>pYcwnUdXf|2>h`|+L~^|h*JAtU_zQlyFjR=B4GxhV0veM%aS4(@bPM6Otl zZPCdvCrgv0QpA}<~%|8Wy+mFGo;5; zb-;sR*PF*a!ZY}YRp>^BNdc}~+2|{iOgWZ*zu&jKR1S4V^znCc?_mZC2Kiu$PM4T3`ISY*-k=Hk}}U134V zenjN&V=pD}I@MqG1D0HISTdqDq27@W*B4qGsn=3VFE7&VP0UH_b7KEeP1Z9n8}(M{ zHj3Z8%RD3_fk?RuK=NO5)Y6RKa@2xi8#(H&=~TlSpqSbhI20D!xgI|%y=qX~0ptw7 zd})7Z_JUO#n{1eZZ`6?RJ@*%-@yxJb$Lty-Era;$KtS&)%A)z?L2Jv^)m^&7-c zd@KCBx^uNUYdZV@U&#E>t#R`FBLB@z2oxaFHcT6|H4?SYW5W!{K7^q==#>GFPT0YK zYC+^fs)5F3pAtJc=)(kdC5f`B4H$xzPbL%Q?Q9c5C+Ki|(VSMx=QUDC3-8yWZK z+r(XZRhZTwNgolW|EBRv&#du*;~uyMW35cyDQv4<$H1NUd1i=16IH)|xP;cEfzk(wz+pQXa^jr+8u=mTo29{v6Zn(G`BvVd!xbX;iS zVbj#w8`oV_oBpW#$@0h0RgcBKA4iWB;DLw|O(ELNdpw|qxzBd5$jBgiiz7^{v*DlB zk~_>tv!)x_2hV{^vxet0A6bp6jv4iW`gv%a^t5} z`$rCL?kYfoxjDND*01vM|2U`k*+f7;3$5;+aG9U$_3WBkTqG_rA?CJR=}JorrDokd z-06x)Q;t)(@-H0a;GM)+oOxm$=uPh*or7Nm5mS?~=|=tgeNDlQ+ra*XHGy8z|tTUd!IQ&@jblJWgHW&J?8u2PAsv(o2#4( zR^if#d<`?!0JY~j(sEWTE;^RU^rrb>;C!FSWx6%51X|H&Fmw0u@lUb)N8Uu_%7BCw z+h=3Xu-MJ*3=lnHAY2+uF|cKVa;A;wpX8D9C>QOEkHwMKm7Z4EG|E2Hn7Mnj{@;{} zTc0I%TA-_gjBbU)Q6y68w2TndW^7m48R; zO`B3OCZjQ9N*)xT&PB+hYM>%Na(2p>YFe;D1U)YhJk>7YXXCN-p}sto0XoW{9)KF!Qx-^tFBL- z^}{IseFtSU=Mz0R)V1^dqB_8Xd$_s53DL6qQ?RRnzy=br!DBIyJ01}h z2F{x9Uc+EyvG1Qew} zYe#?kr*S8k@9KMmLU+EU&~0-9MvB?WX3!>|l6LXe)ADv&c9xT}DDy2u0a%Ra{!SdO zfj*-Oq$oBpwu-;ip+u>Y+O^$!UKEDUXn?+;CQhFDAk`C^QbI8DpMcS#5j=$e4$F2y+0^c_`kQ{>{#a(|3+%}hqrohUq%=)zie5>%xAVCJAA89nt%Jj!8 zWL6Qz=As)ojY67`y^Zn-1T1)Bz(V^2$18unnI&Iv<$k@H=m`t2x|M>O_w^EM2K%C~ z1rZN`^bV~>NZvcCASv#XQ5!b3xY?qENgsH=wNRu}?79r?X<&s3yYpI2H{+p#!A@-Y zmAg{7xLX7EF_OI$lS_CPKW+vHA*uvYDu;26Gm1J%B*F?h4#mn!<|&pwyz$X;OX&I7&i_o5 zmM0sOvdV-5xfAqnPaxUkf;SrrdwW;ATm0U_Is~J69`+%ZY_o%{R+g$(1piXV4wAv3Y1^_1wDc zGX!aayMTe{4anAADK0}nSRhG^tR}5`#jNHz#6LFyzCt+l? zu-}e_aBl3I-$JzCDgW_0L$pf0`h#5Ios5A`%K*B7rZpg(FN+$2m+8p_W%kRzaJmtR zfwwP7)IQRBgfCCc*H8Pm9W@4@=#-t`uN_rXbnQ?`dvk>=18~}a#{i`q^e551P9Zgu z2p+gf10V1ZBoG&H_NSjVhRRbW-8H*HPl3Li-pgCx?13B}Bsb-^FGGODS|4~{YOY2f zL#jY~pjGDzldzACjVbF`TPBgG&!eYx(Y%fe<#u9T%?uvH%asaZKV#?%z3~k(McZfs zJ&|tU? z2@t^wGZa2PFTil1$IYH{pC(n3Ewb+wlb@sSF+`Bwz9dj=;P>#43n;q+?{yq1kYjzo zwhE9qZ|CG1$ilh*YID^NgJO}5;S|>AjF2!MZ->NsqkVu003R6ZY*f2?rE7Lw-H$o> z-uHWa};Lvuu6+Su0K9Xd&DWIAt zHPe_lLe|&&uNi$q1yci>_69FZM}Z&!Tr!YZcg69kB{I96>6S5isLP(y&^2QX!U9kO z^JRT9QMoj}%jS9KH<-3t1ymKMK75L0waJ8R(4+NSP%QV^y*L&AIO%*~e*tDa5HCwh zk7DcuWU!Pzi~Vd$zXqQK{q?d56VLn9DXj6&%?=$Mj7U}_ho$Bb)uNpy28JLPzFM~m zR`yRKLPFQ_7dQIfvFDt#biMKL8mwvfGRpah-Js^_0D8TDeD$eMv7t!4{|}>k`}gnW zk0>RCju)MizYN#||nx(bx_W7ZC0*8=n zN|O))5mEnMUX?xSz-rSG7@G0NF1?Y83bjdW_FEj&|9B%$edGqRt|Gx@Mn+9dKJizQ zP-zjlR<|LM7h2E70DO$L#7-F1EK5NR86uNERvxosnluIF_Px9OR6j8=5$L&Zy=qze zha~sS?7<)fp4z}_2_BuD+p!qpsR-rBKyzs1l$ z%AuCkd`^D{IyWCPg5CF@Ppy(*Gig^jK{6g#cjN*~8Y2mM7}w_#%K-Fc{46PJhN`O5 zrHLDr>GI?WsL_h-dY{Y7vu3%QzBsSa_Vw!>y8F(bY7`-gY!5z+z)^+qm!Dnd2$jS< zR4T6&L|nAf8dG@{K?nl z>A&6|Hq;;Xj152VekIVt!@K6Vc`7&dTmb<&8LE>d3u#FLHy=y}Ym$iT=}gZIANmN@ zyRWYqLOTnt&Lh0$5Mcw>s8-k3;8?iP(snStgCVI@kOjnyCg1RXDsMRKcQLUm@n{Ao z#LWjNY$LqOAPfNBT<3{BA~*1C|4`$f6yB#DM{F^V`c?WBFO=deicL%m7rNnO-7>8> zUjeMiyZ(d1LfAI8FWA}GKxc57A*afAq15pcH@Km&M9;DJ8+>8s2sy3rx(%(3V_?Bt z1uukAXL+JLeq-h{JtJiK4hCT3#F$K-_ka~ss1oqy3>L)LW&r4gs}Srsb6BzNc^l6J zQ>2+HLk%pb?y<2+NlUBm9z}uvEHEvMc&jxP`oVzZ2yvg9p5E>!x?HKDW!>hL(!4$9 z@q&kwSy);b@~g59pM*m?OrPk)*Z1t)P-!Fk&J5Q$(PR7AJT~zB`Fl(zkEJw~Q4H}^ z9`!~5Mh2h4`{l*_F%je-=TfhY47}t(vgMx}?IPK^El-KNe7La#Qy#uVN3;SYV5ipz zQ&Cruns|D0^111v|6*rz$!_7^(H(1hNcZ8fEU?}fR^qw zi3w~Lfc7O(Uj$6q4AVD}m4lU${MQ~Ydeb_@#9zZecWP3%>uy4*1>vwm3)rCWg-E#% z=U^Zu>QU;7GVn_-DlVpy@=Y7m@VmtwnVj+8#d5-ZNaVsurL@oXwa7@0^LtK^aRu5A zC9Vy?*Hjne#q(^#EgP(d9wCv=94kZ76}m+~sJ|&j)bPgc%#Tm>_lrwQp8(J_m~4XQ z#e8s7egge*1adl=rfsaF8gyYWScEPj1k^4rFM=xnCT|Hus#Xu^G&4+7#=`9lUa}OL zg*nBIz`$7Bh3?*wHYpV~>$%QSfQ;$s)hN)Cp88<*-B^4)FlL{D>p+vRUj^8LmcnKQt5?^N|aPB)HzbdS%k-* z&_o{L`{ho|b|do!-^&|Bn1cU4D8K z+pu9bA1nYpC!?vNy}+B?bHp&RI<~3C^Z887IqP3$eysUu?C+YydD9~A>MS{!MCeVp zP!<&6s;Im^=L0^!)!AGVX0s4VWtbO-@gKx|{?R@9;$K0(f&I2i?_X>5uU{Q@$Vl<> zw{3s-{e^boM*wE;EjeL6=kD_a>2K-fFpcJ=amFG*c`~BqKR2Oy4uf`R)7-wQGB>S9 zt@WUKRWLwi*YYNqkgttVz+k2bUj<^J(o%U37gq&P{z?7BAW?>}INf8*XX)5{)pjV; zXU}%Q@RL$_&=oImw>lch7fi;J0$n`t%?FchypGLQhU*gmrNF21hSJ{l`YdzI@%JC3 zs2`wL0$uOJXU{d&=xS_s_Tg3u)TgWf&ybL{uf!9hqg>15)#f1mqdct?*MbR-;OzyL z0^m2jejQOzGTj;`47`?ldp=Qw`NiIv`|9e=3D;y3Zn>ustadm9_8OXb=rUXT9d-5G ze`fe?B;@s%^m&|$^#jBBuh<>F`!zn`$V<+-CJX&BCZGIBFIlKhp>R(7? zfneW0Yg}4Mtk7qyH2nb-cbbP)OJ+8J?dcadD9e0zlHkcBv^3&Udz(v3%rq=f$k!saq*3`oR(Yiwm#EOAx z%fYvdUF)P4zyAbk+P7MV+L97V-W=08saiVet8}D&A!dT1I+%W{cBsz-En-JB3Yq4y zQqZphx<|yK(Y#o#?%Y$>VuO5E*7;KV@F3SL@pD_v3Y!L5+Ya8M>F)9}`d^|01;gJ& z|HStycusjK0J*J=x{t+3ShH zXHN-EdHr_~ui_y+wQxDG+UYzJ_ZjpL$VgJj&YxL?z9=Nq;rX_q;f*hj73AeNLMW&J zP*i^LA~B0=1Gv&yFBU__4Ma+fI#|H@g-)hl84UgWV{?8yvF=$PM+qJu3c|ii+^330 z%k!O_*vUAZxue=6#zdn!-RAd-Vcx&!uCAt{a?fmj9*8LF7s{ZLTL-x3bamEO$X@{Q zQW6avC$r($J_1CkYujf0YsJG*i$Iv6R5X8bTj7o8){w6BABejt6TQ9JbEmkEOxf%M z9_N`jfk~p$nw`atC|cDSS^!x}da^7xL-h^UVpUk=&fI zij1h&fnt;wmeNkAWa7kk;Mi-7Ur@JJ1EswiD7pS%z%j(f54 z#Li(sug1Mpr~eE}czs$?19{yL&q+2)C?P9C95&9Vy1G|O`^l6dZFI#IG>QkJU+yT1 zmvUbVnN(nS25$=G4j-SsMbB5UwQDoD-VaaV%hWfn{6>$UgaIi7--d=e`T`#G)x#hR zKbt}+sbPob?R^lUXp>94mq0-MAtvw;Caw@708?!E2~d`ExP>WW(5_bm0@XLGNcI-tuEST0X z9iwypnZ>*a#!KeIWARF6Me~otH{@9s--lCaO0u2Dyd#8rIigb@UtU8;^bEA4m8wpQ zp3dkQe`xHhXh@^jRlV949?7)cCu395c)M5B`6l!M=+J|ANNaKy;MolZu^TWxgFYQ- zLeK-y82tP$BPKSp-&+8S8uF7iGaa3ujatSR|Ig&jsp@d#j+c7AXDTA-ngZ$*EodR#2w% zzB@w7J%gF)XW^ZTDS`<#e&RQ#%;ePivKih@XR1{y>~i8T(X@DM?h1(Z{muZK*`!4~ z@fEZiio~?c73I(iJVLBA=2}Qwhnup3f=E8*Pr9Smn+JraKM~}AbgIAj&~Ey#g%17$ zEv=Qd{>#7&^=ofmUWx;7?yc)r?{G?QEbZYX$;>a3sA!7duL^h6$ds~EOcYO^3y+9B zkb=W{fxR^+3r&!f`-31WPBa8sb7uDqOQz_CN@vE9t%ML>6FYY2rK{t$VAJ0m-U&;A z@i~_rk`v^8?`kupP#>gF7pBP-WWHuekd-}EVtD#6C^{NkPwtJyzUHsrYN4tluJ+wtL?8$eo$Jq6y_#z(5O;%e>fgt zN;Ll%<3ic<7ayQ7>?!ub7XpBny9OegBHC&4#e>ey)zu$WG{r`vr6eb+t!;A89w#=; z%+`ekMSC}drc0Cc7&^e{2MY0k-+IZDI?zjQqV?O|T*^Z7>!)^g55LU8jf*UeoEh#*-rdE{4WKB@|OZk5vSZ7>UH@Pzsb zgoaMePu0*u!_|pVF%TL;6V|u1bPR-sZJpRz(fGh(?lC7t)|Dt!=na2c);bi{w-h3SvS$ujA#W$A>dJ{ zQu&TTKK}rL$h+7mo7&_CK!@?VJzb|!aa2)8al!=L`%%)8U;I|(yNUcZ9NG8)CO9bh**#86M0U2Jg#ioTyPWYq$(CKMGV{E5`Q;gtvLW!p zal2{)3YbY*oqkufdAM(agHB2*OYMx6bLOAlxae83<)uDZ+;B? z;MSKR&j|zv}^TXU|66KTx?7O`j?RLo4hK;Qd=!LSf~ zu2aue582puUY(_Q??ISI| z3(ysiS*d^IIeIsaNA!M%eAO!;Z#i9D)YEGe!_OjNgv3L!c-|6T2|Q zl3dZ%=dN;wv&d6|p@o??lv-Ki(Gqa&`CP92+%Wz$BW8l&kghg2N*^F!1~&)r1rNN0PKQLtVqa@9!Qj*zCq<5aV!+oBzQ0A~81u0BE6KUwAycT*E)}`W3Tw?yp z6xEvxp~eB_PnacpDxH@ffu}J=AinD70Wq>hiIq0%arzru@`tqhB&4LI4d@G%*k4ds z6_l+DTIjhQcpUNS)%3XBFs-YaRNnO3u(KQ$I1qr9auv6)6CKggKKGnprwT30EG~R{ zIrU$KrPyTJRuRPy@o~?(iEh4b&>3cC)vC9)*|LXQ=v|wp1VAI(m${EI^ME=;QBv#m z-9RUf5F$I;2sy=-7r+>V3#nGMx}sk@T$B_tzbvyX~w z#`#?$?>HysX0d-~2+F)}D*}PkV;(TkOK28K&SJM-QiW8@RDYJFQcL$qo9xhy-sHNpX>cL zsK}0(T8|T(r;W)N$kz>emLxgWqIVH+&jJqjJjQNJOpLg&8Yto0vD@d#qo#*TIf>=d zf-|g@!CtAStmvIIFYsKZs^DxOZzUjKTvnULTsSwku0WhsEpIHeMGB1!T4$_@vn(I?-3PYQjI>cJmXb^kFqeDxe}ErVf-W398!etIIPJr8bFB zkrajE_a~7tzvGvr*ViiCx6o>oZ-GdgR409C+b&F7k}k!A0uY^C%(~GZ%b5>n4OzE9 z6@qS&u6M3gQgY_;&~##zjC7mc-^sKaC!^Ik1vEj&uclnWQzmnBs2CO0K4nu*ZDCt!~0~$-nKHk@4)TF($J8h)l(Xi>qRk2m9g9fzvwg zD}74`1A7CDv58KJIVnCQtCW6R?Y7a^c}&`#$lS%IpgJJP)Q#Gk&G*!<&a^v;3g^4v zl{G4b#>}kInWV{-** z$8Nu(r+8^0BfDuvNFrf)E1%6*IwmIjZEAO{S&FHh?tMAohd&|`J@(e;wCfZsQKN<; z9XU0n^sT55s<(0RZr2Lln9wDP!gt%5qTZPGAnLEvb##=Fd6toA`OHk>+q;LlK>F0= zIZbf#wN%SzbLwqO9;fM7MGhzGL~DjZ==xDrwFkv}K$4y>Cy8(v&UuX22L~8-3q!Rz zIVGJBLer|%StC)scz9!t!|>_0+GmfsvpW+F>W&m;p1n`B6m)K)t>v`aceqFSy2IK~ zKa_#Zw##+?=lIb33JAK&iYn`eWX+#_c=>>-(stbnxlGh~qvuuZLPA?bL!Y{>0g6 zE7&f(F;S;`SQdDm`5ZuF5g}%G_@rpp#%CyRVR?bw=UDW|u%~DHBx71^Y>kVGxt7Z#ajk&@MM)sYyNsD%QRy_mHCB?@JJ+E#wX%X354F!S zs7)mEIL-kqMdu})vLi!tFDfx$7Z_$`WkCtmFDclUZBLt0Y}h68O;{}2bYp#eV*{(D z%69E_RQe&?!3IG#;mQawsW`>s~2#;)n*h>K>aZo0^hz%;`vKlG|();RWBkh~vL9l%yUzV8LT=9$LqyxuJx+)!q<< zEfqt8L%r1Tm3wt%g?;ap;g`Z5yAqRrrCP1r4&m?!OVZM{Vh@1l%JT5m348#(pwB6 zc2Dmx;ygrv%&m8QkFFHYXP_y4i?mQhi^-`l8u4NxRRlm-F$ykM!Fe#$eDBVt>5qbpS7MBXRY(@KZ~UcX87=ld+&Si>$>*dZZ_)& z+i#U_Coc7OS7_%MgIPX68@oj(a8O@teXNwOB*?oaEi1be7}>SHnwBo7{wRc54kj@% ziqw-_e0>U6%^FlT#%EH2T{wvekf~iwSe+K-QLP+_IX^7Usdge)qX=n0a2$YP--Be= zaqZ*IJQjPcsWkG&gq@qVA}wtmIbKeG-GNz8;J9 z8S+^Bwfg+Y$w`sJR88I5Dmy2qbd7EiY6vU@87_nZ0n z_@yMAl$fHcxSfEaFAlSu%gV~dmcbNVXWBNTHln}z>#aq;hu8W+zz!KOAra)ql@!;W zp`ludu`W>3yCneXicf>7gwqQO>?ca(pYj!ngNMh?!;^acs_#e5w9}}!gwES1`D=Z{ zBNf;+19kPor3sX}n#RFb+MWIbHtP+c8hHqhES{{pfPcVF9L~1)o)5aQ{Kt<*`zP?a zx+%3b$blWb#v%Xx;WU*ok_Qg}KH|ySbbKZK((20liu5VWnrqH3F8*L)d46rmPcD%k z(cGNz-}ZMa@a+EWwuP{U)wMNaBcr*kE$kj1C-@EL?O8oDzQ+jqr?1>Tz5LN}w0Drq z4JRP@`u)cbZk}peXY~3op8=8Y{z|E?@Z_+{+V*yIa&kWGN_y+U%VixhM+BG^ zMKRSyE7+i$u5^c%zwyTpjwP*kTb$#@@84%5>Jg@2PfQOOS&~}A$xXO61#o5O_90PXLkhzd9^fFUAa!ZD5J{C2a5@*ae`D*b zVsY3VgbJh_NLC~zX_tHH#%qK+#qYr(AbSrn=CN9Lv@-@#!RKaXD;?~aJ!sD1?R(u{ zN(xF~PP#WMfHd!wcQonxVTjKkRkax9DkC+iex?LFeg=wm*V|GSz=Nl5_69g7iSUq_vD^&CE&atO@3QED2 z*2g~EG+v}0*w?V{S>_6cgsz{rRC|Ml@{pGHXcghZv*uLb1Hhh^;=0Gxw*@A`LNKSQ zXfx0v2Q;Y(n{h|e&6hGoTW&XKYsa#3V>%@lt-FR@!|$?VyhPdHJ0)($+S+S8l_(ZV zU6_;fM2+yAk@B_EFg-)c?3jqRbhlk+&$X{^eHNO5Zw#Q;iR31vlv2=gAd8@0<{9r2xQ>okkamvqU!xpyN+8 z=y5+MCay@Kuv*I6yT4l|hTn?+2q_uM>Fxv{aYIv(&^$PV$76-%26)}wX3y*H(XT&w za&;IlD_rR41dklBox!LfZ1IH1@cHlT&0c&;h{2W$-t9Y;72oCL3dpbI%6HpQII!G- zZA)rS!vgqxF7AjVDHLs(Z`-Ss&a3%i*NTWf5#{>1|=O}PMi z(4#G+GD-zm>pIz?NbmneydAv>H(HPZQK6gjw-lhWkgNaG1e>3mPuEyPC&OBN?a=72 zw1do;Iw&oul{fXo8cpS^1+EoU6UnJO3Tc!d({;>QznxV<5Li2yXu8ItEEN(RK?b|1 ziVD@Yx$zCdlG&w3+V6|~!_vYKc{r?Je}@TQ4DQ55?mQHdhR{k%(rY~Z(D)EH@@be7 zTk-8HHA{CNiVK0wjhUHQRyK&UKV|mEVJVQ>m}8*ml;T_kY7hiCesCn!oZyaDzYnHx za@%N^mmhhm+tEhL95!{>%&=oVu_n7sO$#h9zo!+fflPiy&U&MCoARP@z2njHZteM^ z*QDItj!9xksD<3jha&jG6ykHp(FH|C=R1+rr$^)z$Z~jWY-#i`lYjtZWxJ1A6PsSU z85t!u23gy?!7!rYe~0EC36bS{tH{_`hvnWt5TT_=i{vk;s(gij<8?9K0&vzXTwJJ= zJv&czCp;-JA)&%;Yd*L<*G6tTShn^6AucUN*mnUPPrgTU`wlKk=`#WQ#h_eT-1VlYgOjU^`*w?d#@Q*~xen;t%4FfK<4F>tgb5OM3@&ZLF?R7c>@| z%3tsKduc*_}vSmC2Ev)Om29+qp3vzJ?n(oI` zs{BZ6Ovsd)MHEA97^Gqkf-Cs;8`oxw6=e$}Nm-NRWo3bca?ES!SH*o5u!_gR>2Ma@ zk9f?F-^%9EySiT9(MONMkDLfJgDhi2lw}2?PrE6@oYzLnArr#0241ZFCGTpVPzzN+ zr|b4fIpho)Bx$8&)F(>54a=&lesGL!rNdeGY-dRZTc~(>Ul;7)sMq42bt(zPu)&?v z{zR-ku#m*U0Q!iC4-1x+`5Y?R+9yatgIeQrA8G-|%F42y{;nyQ*~SzcQ{>E>Y^_54 zS3>8FU0_%lFmv3P0^Q(xdV2*$L{@&!3H8LV<&E4DmxA7vVtDDu3hS`wt$cA%$72EI zs)&TURsL@6iW>aZNk=g^mbECxK9sB)#xTZc220px-u&XJie4N0eV&m4oRr@eae`F= z58$r<3}hb)`PCK1JDtR>_jmhh=S}S0hd-g;+(J6Lym^yVC=1CRX5vAs%!gkTVoy~s zO34B%@S4=_5C56K0XwCyB4GU6PM!a@(^={)wJU*04*604#De6ipQScdZjji6;TH#x zY63deQ~a~3Kd#KUkr1%n^v8ee%fo;l6>!2Rd8SqQfz{6(t z+-9OgcgiH+XVb;?wDG7Li`kE2clc5`bjU@AhZi&;lH$JYaoUSEY;4N4{xku5;<#6{ zR7jq7jq8ED|J02u)n7U!FV5bWwKpiu#k5lZ{d<~(t*vcEc{zL|)IW(z-)Zxg3#Txz zaDoT#(yz-=1wpd*e}tG>TMIkx{EB2yeb$?(skdSf8rmO(O=9SrW*O`P*w2-p#lDP^ zSFgMZ+G%H|1uBlczew*Vt>>Dn7$t%xLBnw_1YlcJ1XXmC7 z{_D$cE?*xXY_O02moD2@_T5+Izup4>zLLcKFJ(W+>yJeLzV+?yAK<3_{rVV8^k2s? z@xAh&wy+QBu7k3Me_rH|Uj3)fY$xv3f6wE8|J47N8yFzrz;LCnNVQ{IHPuU%$hSzA zG}U`I{fiSN@7vL=z%abeJLsG-k&8XQ8qlxou;dn@gaovr+5r^(@_Ri#Ss2K{W08h+ zHL72nx7dT^LX?Qc>w}(!g|q_$sHFevRiPC8(04cGbbxtR=nM?+h)YbIo)$=mPgG49 zJOXyxp9p*Ul78=jKy12)=hWfqxMq#IAcyNZfL3lEP#T!IBZbA5`wTcib_+lwe($=K z5`TbmaGDH~t;G&h_;G_BB*k+*#0@(NgV3^1f@#|;zBiGnMAzry84MG7+(UBx6&E-& z=)&pzk;)9}<=$GmZ4CPyKX2+qdhcUK}8Pl){hY>qlyg9AB2`s>q%V=Z`3IujNu8dlTmyc=qgj%CEs0DL%_7 zZGy}G+4uR%qu^qGQ`1LH6Da}>nDNL+TI#bcG_6X)D;U6+X5%sM-+o-nYx^Nfadp}E?{TLGiC4E?N6BPo`lwoHTa?phlDmI2 z9U3mUnm`hp7-6BD_wDjL<$<69{aHe1Dj_t>aX9 z01s+vT0M$KF5Ts?#-t81kYz~+hkf8nGrRl&GL@NGf=2|(Fpp1ef)NNQ@NYwd?B2&~ zBeY(p6@j-|`0L7Fr@t8_r}+i;vRGup#IXZ;@?FM2y)w%=kZ}=T7fn|J?zzg|iqo<4 z7sk_H#1`qD13R}}xJMZI;-9OsKy>%b&a!jvpVwnO^LN&xr_eYFpQ75K%oY}7X%hJ( z63B?yv+WRHPGbzRiO_;e&!F;(dq32Ywc z2qnO%ec1LEsOAj*5dijlYozk2aS#1GD7 zED7lo`fbAslm2o=_)x!y7LhMbZg5H7Gg{8|?cIg#36IZgxUT_Hmg>Q)OXLg0__;X> zBs_JsuA$UWMJ=tU^2oyYc1`4M8cR4ZXRKncNR7? z73*OVT>hZLC*?2iMJvxQHTCZI^;u?sT3}ve#WI(Vp7-7H;I8N=qoboxb#?Vx*I42( zDy_zOH1myTCf^De-$+D#7JFN?BL6@mldHKfgPnmRd@A^n4 zV1l!?s$l?p)2CWuB-q-sMIYIsLqoPX77!MF#B`gJnaIvLXMolk)JDJ|=opdMK4vyH zP3%~Aw;OmOhqxSwCR48}G2w4ZaJ68RVG#vExo z=mYOwpWBr(+?<4=R8<*-F`al#U?`?GDFOAAkmaJjY%Ci{145U>4LvYhc}K}9?z`!m zn{r#DG(v8j6S?|tY!_2tx@|1%%E{M7-w4`29-_69opD;T!)&uT&foCqhcPWWnQ`gY@%~f}Pr&UuMlbU3-VOh_0tY^iU;su#sUEq}!P`W3nquU);bTG~extEM8B#SUVKul&Gsa@b&8+ zaI9FZm%0c;Y3Xz=Bux@WolWW^ADj>{_FaB}m&>N98h8OPCg>i@^X2m_PdmGzPh$06 zhQ|&T7J;IbYBFbI;WyT}loDINfIt#K=EXk8 zID3X<1|{1_PuQCzZO6S#79IKjlmV31Qj0G&XCoYh(PoP*WzY7mlutJN-d3glfz zh3*oL2ft!!;Mk}q3`^yuxclH@G_q7%M@yK0sWyLv=FOWK??cN^Fj!`;e^_qrfFB-L z%T?gFTUs*O$mI!XrdXDE4>9$2udv~6s(Hn-D=zH(VARVgf{>P$&+WUXiNDlS5i=_* zWAQcl8qWx@WvZ($tr+&n$<5fje=lUc*(!QXGCnbpkcPKT;p1Rm-+r!PyMtg9&0{Vm#0b9n#YN%`KUa*XcDLe5e-1S$=O}ME8_w zXWEdlBw}HCna|_b*1q?dXiXVdJNG7@7@XHa3#;h-70svHw}MJbdgaij%I81sR{(i%FW^V83=moGzAY{KNGe6pkh6hpl6Oe;p$*QAg$1Z1Q zE@wE`ee*i9#>=47r$%Dds7YAqGAF5F>J?fW>@^(cKtjDJnI&enMp7zAs~;dGet*_U z5PrAJVcE0XYvJ~qL>8JCG{#!QNeRUbyUTz*hg|G|0zUNmr1x&B!1tpXq>Mudepr@Y4juFuv?(cQn0o@}5w;kal0UEXH0j_myx4iS3|DjyF%^FdfFzx2YXQfd8jTXG zqfLa4ipu#w`eOsnH6dBqY&S(7o&n&ru3z_6@Lu8bnflYdTkpa4hTVaY%nw-U)Q3>m zGmy+?kM8hx1&A$k%D>Gp+aH4K_tXyUogcdnt@Q6=BwBAW1zDSh2k#eB7PXdoe8 zklR)WL#t8fuqv;0FARj8>B2odBc_dKNK(V3qmpBSZMuh+Ls5R`Td1`zFhLopJYdmeaJKkRJIL*R|!MTq7FDF5DJtI zCSq)@^3LAB$PQ=86S6Ru31lAW)n?sqVb1lCp(gKxP+DH}gmzu-;LE_fmDq0@`D#cH z^rvI50|32@3;)Q>^cnf~DRTmIm@AV_!EKVnTV&OQ5(!v1C!m=v2aJtZH9pkdF>qrB z0;YM^qd!m&diy@awM$-zWi@<=`}%`ilAnY;RLIu6y5?7U)B;)T>n%n6BKhElxOk-4 zA7)5yQKF;m>Fw3u^a`$)c>{1a&Hah5-Cyx3H3=wQ$PoEfSs^wyJ&tDL;XK6;q}~VW z0w9bD^W9{v)E#YA${6WW?{&72i^Fh{NS3X_D7>x`#|U6LCMIU45{>6N9L__;*Jun9 zHGubiz!G0>u|EY|rvdEdtn)yooxa=Tv?n8hOdNDq4Tf;wWhk}*>Q#Y zhwh5dGJP(FmQhE55Uh&RyFr|P0!qRC+v)$-o%lhl9ks17{x*G zO8}BE{b&(#mXCKC$dn4D0jLdji;#9}s(h(!1&M(mhHLlXR(SyjG+@6~PAxh5gxWV7 zR@7lEE_rYtjC;wI%}tpz8UmQqJi#T~VQp<-R`D&zIA0ntmFbVd=Su;U;MMp^z}W^o zYEI zrV3!^dgxX$43_a@zR4e=llKtUS;6JIJfwQWOyQgZz2UGj0&DOcWcv z-_vM@6=+wa;5!e6omB-wmJ;YE+|C{clIlCZTNetLwSQsNa<^lfOVp(86}IkC zv43bTLFj_eG{SyS6Y0`CJ&lECrJJ7#$VYE z=fv^Hy1y}ls~D-X&2{VYU3F4m-><|<5+jMK zZypv!@Wj<8Y8Gk$YPo9^8^^}RCg89Ptg~1Lh>XX@(v1Siw<(14*I#a#v_xRZhx$~1(TfZg3$&w(!;OW#k z*INy@cBF!d^D`M06$RyCZtAb0@Ba9s1opMDnp=&LKgt&IG7%`aG)qS193v#M2uE;aI!uGXqb!JX>T&N*wk^bx3^cu!U_<6*4EnP zUb^qw@<%!@#Up`)cgA*)EjEr0Z~JAqPYBPKg8!w^)3@$Hb73=*^ZvMik*5M%LD|xf5>#mq5_>RIaz~utzaT4kTx!#x#lC6AjQ=0k1SS z|6`g9FrK0nmaIl)DLo54zt^Q8X#Xl-?Tg=d?{f+gGE)nqe2l7? z#S7`XW6Xewd^db`Vfp&FiADbAgNgcvhE0H<08&pwM<*gC=5!XPG;Z;(x-s$E>gwXg zw8F*4CHjbJGNQy7s4KZ-7Zj`mW(}aTK_dZ^(*k6p4;(A>81L{7wcqd2Jdg3_tFEXp zL3~;2P=P3n7C?0a`BbK>j9Weaj`Ffmk5iI;e^hVyKMBI0r)yZY&CSheB-WFA6X5Yah$UGv?ANc#FwLt2zcIgo?oU<(ixUarB~CMi zghbt%x{4Sr*(V0?5!yt-Phg+d%)hrEMyd!uDI*|L<9#Yv%6)JAB|<1mJVfw~@l@J& zJ?X-!7@hEYrT7i&TtF>|lFpkphA!Cr!cqd|9ltJ46$4;+;_!Q)HL4xdbT zb=__2BsMa#2W0&f&O5gIOwVgFQew)#r!`4Q0AABXzixGWyambjU7iwsex9_N*Z=t; z2`Ooy&kd_0t8A){020&p`g!F;?d=-*4G*eS;W5k#R!jsT!wwq7F2(WjlOXfMIiOw3 zxgVx>3(BTCcStz;!D{O{%kws=Zzr+)qtpBQ4(d$NrXP;cejIPBKb`tTlY4R@Wg?yyMEKp?AW3L(CQjg=LP!mam4M&U^jO1V4L z+rM6bbPLlc3XHCkzP{(qU`fKEf`LmlSSg#eBY=)aZz1iTUSx&J zZOy>eQtER-C8J_6m!xEC9dETxy|sn9dS6`%5QMy2Jj_MKSa??@W1+W3MCa|~;^I_u zOM`@HrTM=ly64NTq?E6Csq5%~))t6<5f?C1Y+ajq1N!nr$wf=;?W@(H#g?I=WHqK} zx9BE1X&gy{RHC~y?(}PEWKRX{59;{Sl5Zk{S=T}6=FxDWSzHoNtj*IWs&Ke>u%p3L z9HC15l0h5@_od}#Xp!X@|1ZSSii=;>@w^R>Bah2L6Ya=MSvk2_cT~dOFdio|{^avA z^No^{V!$C!SJ^o`qxaBw#JRPqaq;ATSw&Xrn|*acQ6hW$AJ-qrY;I>QzOfov-Z(8o zxL1XOIPlodJVK9hlr%oeq(Yhzr&97rdAiil0WvUK40f{}G#pF5ne6?iBFubR$##<^c=H^BBdAdOE}cnd~mtGnd%B=pS8z7f6nq`T!m3n+vWj< zw9Ji>p|>F$4A~wsGSn|BY~`Q^R`Qx76zh);Ef+j5k>}16DJ*p; zgM%Y~eCqK*gV8jMl#Bq^cIQp~fW!mLp!xrZ@RR`A>Yv)cwVNW9IptjRj138FJtBMG z`loAOZ;9?T#l+~!khHtcA*&WS<^Tx+lu5Pe1zbUB!0-)F?G%%9R(rd@f8QtKm`&U9 zn?!~tJYVTqF9mPqGQ;|F{Aak$o@hb-?@q6W0AtW{>ntLarXkLCyD}E5xxe@ZvZJJ} z9lu;!unxH^?)N%fMSY`lYJ6+M!JZ8tG1eAFljTxyYyC41z*ilHe*d5% z(I$}q*U(fS!@zU0fTgToHN@GPnXxnHg0Z##|8?_LMS=eOB~L@skY%{PCKpUGXU%(gx1;H{Edmd%q_XSrZ_fu{JnDCTb)m#w*sLL^363PP$e&TLU_;p+)Xe-pe(9RohyXmboND ze8dmd-K#%vl{jZ8chYRUk@O-cgVVBD=`00N+*lYqa z9o`)NQtpwz9IPajc=`)YX|s&8?Y0`sV1OdI8i+hBj6**R`qfCI2(t%^^zoAszK67z zkp~QyXf~lluM4}Lh@Jf%`4wyb;QAv02FQ8^&N@OWT`4LiCSU**bLwow@tSv(c>m#> z>|T?)Kb&N!M&uh2@h-4~{iWX&Aeg`&8r_``{<&CB*RZ>vq`JPQg7}(^<@#FBOQc0* zW$m`|XIQcrys@QC`<0>V#V(*FAck+zwNBTIKc$RSVsC0NGs0LG*8NF=6R5-{CnZIE zONw|4F($ox_a4my#G@+6H23!M@-m^&&S;5{ZmaXxC!ttQzndN3zoH%%b~qPQmLwBa z?O1*SVgG}3%))wQkfG-q97tHMorURD8`YjF0<|FW;448Rb15 zAf;PkhM4*nPJpnr-f3+tQy00!?2VeqmjY^6yNlukyPHp*RH6iEy&Xx23C$43oPcMu3E6^Yl&lkZN^BMLqQAZG^BT@dofbKvD2&lL23_%vTs6(VR)ch7ZilwFjl zp~0ig`l!|nJ21fWTgAzAct~t=lGMSTH5qPubX0av;DS@L{E=09S>`|p#4&+>`OV_u zs)zQ1HvE@Gp8q=@;mg<{hlSjy`!Y0$g28-Dv$CQglu)r3z#skX7Sk$-r8Rv@Ob*QayJ$~|ZQ%>&n2W!&_`1sSCO4+e3ATgk< ziyyT^XH<)PSpELxDC1^y?Y2#1JC!y8+W*TqE4A4reKeQ_0DKcxJwaV1+ex5>1IP&2 ztmdf%WU}`*2E5Cwsu-E-PDe)rmzLfG;caVs>#fg3V~v^o-+3H6Yrt;t7`K@=$TSF> zHPBu6EhdJ7j0{9&+sc$8_4ZFhmb5ZzKu8neLPe*dwW7)tz24fj2zUZfB7Vo!qlvog zd8geaJ^6L*wxlGCCry?CTxqlps%s}_WZ+drMop3%PwYKNus0S@sgbQhEfP*eJ(mBJ zy-a_?M(>feCL4do--_Qe!p$V?G$GRCB(XRoS;ZooeC>l1fY}V@1rrvgeH0o$ppnN-N=QohkKsj`Q90_F7c85_Zh%;dfkQ51HOOQD%>}x-P zv>fE(11SQ=R#xTEGdQZj%vApwGxOm-{=x2%i2HV(37Pn*T>>jRklz3~Yem@RV3}Ao zi0d_qwTsY`&QK^+M&{icTN4+psG9BHhtfj7fbo6#-;+%_jq;?TjO2;|1$^# z!q9)u-0Q;JSZw<95QW2IAN$d4hk=7&Z(7iEe!SXgYTZQjNqbu3o7-!F?0HmjV=RvA zqhbyk>&G-)g@h^mo-?a-l=>fY*027T)VUu>osEs>0Y&t^i>-{C`Y-&%uUAgmMm|34 zb9_N+)E*-v^ygqR`MO4-&6h8f{}fMJ4c5#;6o0eXb{T0-KaYKw9dha|U2 z?HS2YrA-`YhN!-unmHV1Y<{~kf5G-%I|5m&N~lX&51w==IaDzjG0L{?v^mJd@fala zPQhE3vebmL#pU-w>>|!QrPFSNRaI4iA%Tf519bC-(QcYANvvO6?05hOhEd4D3wAlT>$ysYvo@}d1fk*4jnrH@4(f4}}?-s{; zMx19ixj2y+e%@!zK#wpp(~LkA0)$nRs6VyTTVGNc1S&_#ltMzDASzS>Y!hVS>0xR? z0aNwXFLP^a%=ze=K7YsbTwcb|`vBvwt(G_?ZR~~=A1x5%#9c}HMoTve&^vI`OO-&;JiThMK zxV7;ON+LEQjvpsni{PmRucfgR0#S;3K}o4gx}verE=M)!Z33|7ajOlGYu!z*?erD; z2^I;-?Y0rc#!G;%vN8lPOviTUj`r4Uv!w1`K^w>0*(1t-rBB~fu2D`7%FQauoJ6(q zr&Ze~tTs$pYsquY+e3Pa@FDVK&TzP4TDIT&SM}d4RC9H;&d*pa=mhRjJF~Sz`y~%9 z9dD>pLGjvYNa8L=ss8nPu|8P(R}%2hOE0pc3$eJj2*N_wsRmgWVa|=pHi~>sm&(z$ z)JRogfVgpj3Aavkt~$x)idTob6a zLJl%}eFWfVxgzY5buUo=kB_Sc3kC+=N&cVW*7{_DRMuyhWb=ye-`|eJRKDw6obyld zJWe-jYr|~|6w}w&1uKS`sT)eN2i)Wa&vRPdw^79*mt_!bApm&>Nq>dK)>90?wz`1= zv^}_P8UXh|<~V-t0&Y0~KnsK>jrS9Hyft3cza?}=SqzL7rR7vPp8Rq6U77K0v;a7zU?s_rnONOYL(-$hsN~wYR5Dw!Dr-ZLcfYQC!_xquJ{FI& z2a>(ZLYb4Bg8Pe*glRzcOq?I)9y=I#$%}LI7wi)vF?`OLB7lNgroQgBlZzmu2K~St zvLAvj)=P43Q+yVvI0kAVz%G_5{%mS-FJZZR8rEC1KRFq1kkVLN8w=9Idv~(*%_SFE zxu2G#{oY&SoS4;`DAt{r1!DRVv?5<^Y>KB>1TR0|%Pd%_V!fte9e0QWz+Zq~9U448 z=6;ATv)DOz57=ZH>|%6nVIGeN937yGAO?c!eEmxr>)T#&Lmq6ov@oo(#QQcM!il27 zfS$P4G$=XNz!`SvW?Y{TwDKmmRBP^G(x9$(4|fH8#f zZtLmNih-9BSiXJJd>kEeXA?SphfGCHn+2U8js_;;!EnRD9=3+U*-Kic&zbfmhad4; zUN$kLe)hS!<~3OHSlXAI#Jd++t(VBS8(uB|(6+vey<|j_xmh90j9S0%rlbg?hhuQ<-eOzN7=79M;QEK0lO8 z5X@MgN@%)V`&o});i~@Mb(!RRT6G>xT@|B`d^)b*@YT_tUR+vA;&XV{R^SIfTT7ba z@82KJb$$XsaodUp!-(Z_$SD1vDBHBNh*wfd_;@MmdzF>o?NWnDxOc~VHr(stO@Vv}S%%Jy+6Kb--y5+Xrt1rj9 zfFTEiDQYUCLuwv|a5HwWOTTl>D=6T%UwrE^fFbrL{JLMhwEVu>-ij`iw1|#Mt$r}LQ~z%Xrrg*x**gl5IMxIE0K`5J9{_r51eREmJL^{3I25Rsul8r_`V@rs z+m+K0=26rGkE104;GaP~%-Cf1*jV#t*-26~EkM2;q1}u5pe8A?y6FD(rq!yq&mxoF z$b^c6dwC1b3QWX&mOZ=<3<^w=8r5U!q7MuoCY83>bGw)6NyNDHHsVX>(aMh#Fs=(^ z8Wm+_0-npQKkmaVOh-UYHxy6lS?5Nn3FPh5oQ7oVA6^4Ue!9YmjhR`VFQ&%4D=C50 zjUx7S;3c?xncQWK{%n8wG7=q03@U2~R#}ps@|RXoYK#Qe&p-j7?dHB*ajRPKHok@7 z{*mHdy6ZlCW2_v03&rj@10$Q@qZ|s7VRJxisp>~)w2BX+GaLe9j% zpYQB8&WtJWPGM(LtI1~nOvC~jm&AiLAft4M63`1K0MdmIlRD+|$_}pUftnx%d(yvn zvhB`hYO4Re+WC@k-YxYfKH@f>x)KRQnMEZfG@R=+KmrUz5yaHKBp{3cTegrZhu{1k zI=ni}SLkfLFJ*-@Q@BJKZQ!)ek2d_~r@XKVcH=)2KJ&CMvp_%@u!X7V^6KvcOs@?W zHY(BGqODsbfz9HhMZ<2lKkz>DQ?e{p6|6eXnVBJqipWwk7;@&;)ij*q`ycPth=2~L zSFEkB;||RO=roznVR(AF6!0wbZ4QatrIQVZrOWce;aNT-NLTB@kIG=CK?!Rys4N1h z4e-nU_t3>Us?E0AmBFy_+dpw< zXhHwcE7jcN4;w_aeEwBkrnR}rDL{x4xSTKF{`)n<`@agyf9}Qq?-JG7hn&lP1>RmC zMu#b(I{*CHE33P4lADs8ISz$j^ZECu|A)Ypo6wZ}#y@YH-=c{`PT5|^wV~pZ)5iPf z$F}V zN$y9=HFj6U-8@@cJIMCS&Qah=Ha^5xddP8R|9cIua?+c~IVgoY!LMfNPn*yb{pTc9 z#Bn5oAAYb~z$KUY_ny4fIV2cKcmyx=dHjbj%S*{OasOG|yA%mcc3<=|eZWg+ zP4j#E<>1hs41iA<85vDxwb>(mRAqUm!XraQu^BJZDA;XX&<(#_4zGLXa$WV&EPM5!v^;MqI zv(IA9B)28(z-vgI83Mt6d?h-&xw(l-;LR^itOo>5c~H+-b75cd<1~qVLR^pSwg~`2 zCLGW`okOxJ<*TLe#yp-8OeieU(K)plOF1zenCLSQ`P)>&{T^}(H+m5Yor;42pRd!+ zY3~V`uLkUW-HXSf6J)Z97Z)cCz0|NX?R|aC%^ZhXd!K7XG{Gw>7J|9|ikg+RBu3^v zort}$j`kZZ7cT>Aa2VTt^O7IKO=;K3l!ex_5uA9{zA@iQ+ee?N>Kp!bX=$!qtgl?Q zKeVsV!fEf1q}yOc0hS{BfVK0D2uto~ucAJ<v3*RoI9ak z1EG%gtaUnZNscBhbz>5mrG3-fYjYhl2q9DKi;Y?7NC22ehSERRdw~YuOiOk2pTj3; zJQhW0QVc#nyhFv|@%!6cBKLWvb)U?kAs!xHut1}eo5 z1?q{Q3Bmr#fc12R^2LPPTH`CXfxK~>-`_roePKH>ZfX<~7^4K|Xy|4vIX~wE?@QD- z!!qPHt}bs2UsT49#(UbY2N}!?Bfa-e@*^2qS?DCgHYV#)*x3s>q?S|lfc7QO=o3;> zP6v^)eK?04?v8q|d>!@F&oUE_O!clm7QQ$?zxH8klZly`lg;2)tyTFp_iz@=YZ?6A zquqwWzc?S=U{j{K3k6sfn)qIhIcv96J5)0BD-0qvBC$**U?2^4DLJ@Kl7CRT+B zagFu&8=O~4dC-!QYW7hl>Fd#Wuk%SUnC)sxF|3pz+$F^&`%d>F8)m5NPO>{vT^rR4 z$L9%HOG>WYBy@1JKXsV1IZW9d{N#yPaF^~GNHESQmYIQ*oB(f_shrH0+%9RWI{vYim=z1w^n; zzklJ18w?n9njm5I90H3WlLrg{Ngk6*pam6NsWgVmHcr!ZU zu5HOYP9I@` z4~t~rNiSx#axus1!*s}K?s8eqxb#s=hSj$Wb)EFCRjBu18XOtR!7^x(3dP60P2=2w z5b@aedx-1fAM#(ksI@`&JD71+47hMF$SEi|nW!BM zOTYu?@cmxjy+86ugpKE-*Fu!&ODGv)yzgSC=^~M*q^GaT&e48-s8DghpgM%iv)+v; zF*4FY+HMzzGuNCNh*RH`1_X$g6V&uG55%OyQiOdy;6Bjd*&+R&RX z#$$A<-4r|~-!D>5Yg3++wdEjNgPk7qbTz*8?pFl1)!WzCLYH~@G{TN&@r9v|svB!_Jf=W~V%KE94WkWj>?S89o&;5y|tLxEIqmz7n=x z{wu)C%U@UP{$aX7`6B%1?{6Z@1AGZl<`4*v>3MRx(cR=a$NQdNv{NQ~8ZuCuET_<3XSs>~{z*;?cnwh!kg*}X2=!ihota$Y`W!43i%!ZMv$w=zS z+j$L@ubF|KD-=_rsQVLtE}?>wl5u4Xw||$Aj!^J3|H{G`2)fs;G{mk)+ouYR1N?hEb=2zdh(IZ!@6UYlt4T}nH<^bNz2kIE{tAr>bbRy5hw$S-d;Z-!v_ zUl>*XRb=SLN?_KmOTx)yH4LdDW%J>6Mt=2YKH0 z!A}X~=TmjHx=hg^M&J}VZ%Dab@0!%dONa4joHLT-kGp(U3yxFLhXb)}6TxGg)h|e| zr#BSIQMI6tRR`3gVpI7Xn4YY?dDqBQJfld+5Bs)8K;9vo$vdd{z92#d?@| z=yXp{ALz(5zi+*E`H)^#T5K$D&rKGnZ&Yp5%&$teiKt>LzdcBoFHgH|Nf>Rn9OWjf ztgI|=W@a>G|FuNAFuQZ4XS#p3aki<5IIAD3@hg1ccai$$B_G{tR!Vs3D=WwU$Nwc zx=N@6JSv*}{`9WBm)Gf(}H&DPppG4Fp@d7z4xd)8B8K;QBw?_E$cC zZV9E89ilSH5%N=ZzN!Q9y@6jjYg;MR_&u8dp}9c&5Ra@F6SXc$}u{0-p;W zW8Kr@n2c|OJM;7J5F-`q3SikY<2Hw&k{w^V!pzi0HE5{$Ec5P-3nv^vjGFBSonelZ zPuIEzO_Xq^-|l~KJ+YLd39*Lb-;Zjw9$YQG1{?dkhHOt9-0*iq&A{0>WM->aytiV( z=mEUC+-C$TFxo4)w)q(MHE7=J>e{!@>nOG)Z9MSqIm{>1SWEm2I1#6-pA`C8 zjXRL>Nl|$x*A3@y5Z`fri`)irLdHA(O=SIa$AryB4t~KG|Mygi@?fEUdX&Cg899|K zn351~z?rUB|1pg-cbJNbdZWZG+j0{c-rw81`N^Nw!OjXgcV0V^tFXMZxVXHmSDS?G ztx# z6a2Y7nCSIQj5Nu7NMT_!ytz0;zols=Dh*?QakP=9T_E&VM5!bEhwshKIv3Dth>2bh zaJn)=@mjv^#G>(}Yk1hklY`2QPDe*y6waPX zsL~qh6%MquaWU^_)I52?I~uS+@_=M>8s>o9PQL9o|A{fo-}g(k<(Q7UfdGuOGe9+! zFFGbMl6pwEuHeTHQ?DVP308U7*PyTcrdb_MtBY?@O3KRN;a+t>4|$LuX>@n1u%G}` zqO6xKF4wWnHhQs^6f4juUaZxZjw)xzO)cH;ql{zNzgdB+I`%C_!%<$J1?ZDKE~Z%Y z4|I(qfLGu)Myc6cdIcCCzvEj&vE=VVf8JS5YlYCz@rqTnVTgjH7X-;Uu`%7IA37ah=5OJ&{&2dCqV#;q06GSWR&=jpiFS++1X@DfOr zb7*9pY;8S$&vn2&&p{P$ZY(;hD~zA7K1oKvZpq#Y?0R64YK)KHqxJaJGu;6^Nz2Ga z${8)F`jnLsEXvFa3i_&$l>?$EUn%iy5U}hF=$Xuu#8x>u5h|Q0)_;5`n+==~H-FW_ z#t71VBN@x(mW-xaa@b(Sv`hZTIe}{<2S3`*YH>qn~$``}tbFdUR`5 z^7M7-eoH&Goq(x6D>GB__QuaQdrCU_cg%jYtK)D$)b`BRPv2(e0jCk3+$lfs;A8pS z=+APEOE>L|a#7Cq5Eh*~qhZ^-cWGN0c{E+apDP1nhq>AL?Af#aOXMzZ?7x@tdhb5p zE7mVHw81r~>a!ISUoE*GvNrVn*GqS2^?0=1 z>5k0DyB@KH?FCksJ*SS&1J=sGzT~?*+g#tD1GZ<``6T0v_rK`OJ~(^w@!?tn(ACef1bf#g`i7Jw@#yR;zrSOh?Y>`coHbpS|D6adhz~AI zoW99u{gri1*90_AUaJQ6QZ7N;mtJQAlQWjzS6Lf+3KW7ozHRp|nR$NR^YN#VMt{({ z_4mH5-oBt`pP_*1zFXB5mG*z{c#G@L`Tu9}e=kdANKul<2n zwgT@|VE_I$^2_h_v#evzo&Wu5^8dFtcm6#!^)#?F0Jh+P!zaIvy1#$^ET!8zW^dGw zuj%sd?rmKA;M7xKQ|!Y@(r2-qIz=57F;AXXSW3m7LUjH)HmcAALp4I5k(?5TJp$aUw9$u*1YaMS!Totn+S7q1*q*4GZ19V~3aKE-U%WS6PxmQguqEuHWr~zy*%$ z`z5>Al$Zl+#wjxvAG_eU-!p3Ul-Emln@UdPxw|xX(zBa7KPSy|*SsE{|NClmfZKhE zEpuQ!#@T&`4jx^*^D@JoJ9Fm5##Pn+dKs*~|NpPgpwTQSXpr+UM{qvfKEC?B2Q}SD0kOv`$kF#>Y$NTgC5u`?^+~>s;r$gP*I(-@HzH{lbL{Hx(6RH7{Ja z_Ts_?l61mNQLyl_ELR!Z9|d3BP&PYccPeKToY%BaS+i#2*cb8pHQLQ23c zb6Mlo1mQicr_lwa8lT}}$>XogRY;-|EaFm4|wN0L(09?qZBkaA7#kb%vX#TqaWBUFB4H0Z)_G!zHuMqh9+TXZvgY*9V?W*~}p7=5*9-iQ_UUJCGKSzGe{?GeSwKN?fQbC`buNwmy z_aAN*29H(5OAuaYeYM^+AFO4qIdbp6&NTnt)A+U3L*-6d9svQTrmOGA#QbijCmfum zS2Z4;SU{_I6+0BwQ?Di@3}jxo@QnC>AE!yUDXUFgTIOerfM%`ku4azohfMpiIY^%B zS>D#)@*UEDEm4K>(bfH1ulW`Ieob@U_;be3t+qNFA1rr| z62b76{{6|>Ie7&+(Hz)}PsIORcpm-V&a~!!vM_WRec`2r)E%U8z-n^>=eVayouBxV z2il~U!Kn(s^w!YzTKh%xg@uLh{e(Rhnv%_^%CV^JzawfU2O*Dj8hh3U?-KCI`CEzx#@my*T2A>Oh z|M7#oY;Io8`1m*yi5!M$AauHN>wVoTD=Iqnf85W?tit`ObwK@SyQtpObZ?b@wbQ%0 z%3*v4G2(lygSfZFgfhE~oABRg%7LGeFnsv<@!n4hScTcSsisECm-F4 z!RDUsxS5-OU4UEij($IbsHN~5?hZR#Cy6*Y3mT;p#I<*JcAgsESzT+S+dd4EA!xVc zMbOAjwH3FioVo2@MMrCx-C&g5QjxW;@L2X|#pmChq}YDn8q6_89b-nyN6^^4?{J1R~0?-`Y^QQo4- ziCxzpn{Hb62hr>X7`qDqclrIH+o+!h8vkwWX9bbdDxrzL4yDtwJ ztI=Ackcuc`XJC|c$;FM!v`|dJzb?*~5k%vMcGt2l@67u(exOt`@!uM)q7%etB@V!z zMFk2L5BMbGSk&-NhxTX+Ev>;eC~AB(W}v&y7n30+BcY=#7U)XSuk^a_7{f*v-_-N- zGM}AkRXdpec?EOAs@aKG_(QrAdd?HmJmp zk*gFbF@wYuOeQUD@l?0TK3$gm;Kj_!j2Lv7qGx9*{+FVbwS8_{qnA|+Y&UUvwk@DQ zKqP;Ey0>puvtQm!(AC5PJ7CH=fAWDtQL)1?!fmCS1D-|n_De!S!eHCipYm$3951~h zS@%D1>*-831Ctoy`09J$=8eZw8*_8fVs5=h-jN5lUnrxdnXB2UO#oz zd7_4IWgJ%_K}k)G?@f=;vFI>&oNVyzEmpqlPbYbpCwXQZXH)r5{hgejgzn>_`)z8w ze*S&47c>xR{Tl)Cn_V_$5vcC&M>GP@?=3q#UIwwVQOL(3w-{4>+Kmi_u@%_ar3H#h zxrsRrXHS2Mzz7*%3lrv|blI_*9nm?iis{tj7dO~gcRnVG+gIBb+KvVQ~OXke`H(QHukF=Le8TZSh(|KgHXWMjmQM`)ZwiwaNVS;wSgl9_Omci zbKoJ|zJDO*=;rO!F<;x|(neWp373`R0|)Nv+I@x_4137 z5JV+Ns32a9=&fI4V~-N|qk@BjZ+#TK|5^DNjX(1F3QU`A zoT>*6m6Gr|DPM3(T~59kfxsE#`zOeh6@#C zHa!;gDmptcf&QFd!mY&6E z(_8Dm*kEXmEM*`HINY4t)%v0CoGe_4jUpjPN^B?%N;c-gufkmp4>I{M4C2Hm0b`Cm zJ5)WiPKH&hoApHJpB5>#`1R#tqQ;xXVdt&D4TTdVyRUa|+VM~HcF@~P#b#plxUyS} zwhUTaagbA+DnoNG*|`u&bexF0>!Z`3`xsMU=;MQqFzSmVTxsGPU8@CFoz?kPp%Lm& z0yi-!KX+yt@Qp@#vD}M1f$JpDqEtfSx`37T@G8t|mH>W_-uFsYdwctxy^fK@&}u_N zeZS4+puC86zgw?*@WTm>x{qvsrH3zcEpi%Hf;ePua)~)6fPkF9_xMVq%7|DO0DeSq zh0nzrypPx4wglQP98MpX#IWl=cE1)T#ziT$GcR4p(G%=1A8vPzG_`XYN-|P3IdG!b zIi0mKNRX0phfb(4ZrkdQ2|guzK+kl8B*Jg!$@4>$eSm~oc+RtiO06J4c@oF9K{&iD zDk~;NXDtyOm?~g(_!XImp_cTcNcXtZ(BI{^DG)9m)7Ww&Q|)0bnFOxm5D-E(0(?jPh1A7i_xW4*4A9c?0cWX=+L4y zfmo2ebax&>?Ch3JkOR@dS$XP*YJ7{qT8l%PmCl%`*wms#b7$vDr@_u!j3foxC2w;+ ze29sO(PKvaxO9v#C{X|>ybcTEx?ZFkX5U8Q#P|!Z3f<=gAR7%oF}b*2YWDer8~T^w@;Ql z>(U;}A+lj>o9nV6QK;jlJK|Kqd7vxGd|q$-_}K=45}bK~|4@Ka{B&j>YabjG0fRjK zm7`_UgJS>VX}=?AY}9Up(GhKHDUC$G=@{Sf()-Nv|y0opN}Z z0)J?F*?7F(zsI4z)&n=D(bvCHk;I?Za#Cqq2@fqZG%sFH;cqN3s|^T!LDA1sk{Eh$ zs9hlDb|l+_j86+YNSE7%*$0byuBof4_H4^iEi42+IvwpTiZ(p@cK1|#VseP=5`Qe2 zf8g`R*`UhP2HV~dGrx&?hoDZ=)OQ38CU7}{9&!Q4=WUbqpAF4lDa5DifyJjAIRiLA ziqrq(7dN7?aEL5T?53u&#;J526Fwo~REUv-kI$`tATTeGt;4bu%|Sg}IGq>kY;Mjw z8+46+yh>M@#D}3S;HTjIp$pgjA14SN8Wk(0+6S|-omVhM-wq>?E0!oNOMi_&3#=gaG{5rV z%TVhTU;Nx$nfk|Ab}RU9L2=`qBHAY!PmWiDUCqtSOJDZjWTt%2FAaE68Ou$*lf5pm zDp%-F%N!aFmB1_5Ay|>XwmjnvZSJ*0<(l<{7|FKqv|-~LYgr^$6O)qctYbSY>wP^p z3!fMHkH`L$^n>(%?!Y^mdaNHfD=T-2sqYNa)py41_NfR72q5&Tat+P3-BomTW9>t7 za;y-v=qbPY#rGv<2m|EOK*FW6faLf=WOB+Kv?c%xSL$guda=&VMTyJdIrJ-NjmG5c zY|H!2?BQu*aAX_WsCeIgtoqIH32%bqa0IzP-nT;IT__LY&DYMS?}Ed^DuyR7liU#z z^j{F`IdQXA8TM(rsqvq+?8Cww@;vQnh#7sY!uken${|nlJ?NUsY`6=a^>K1?j#t?w z40ip^h4f@3qzzl*hGn_tLQJcJa0fMYVNqdwXUp3F6CMg=<~pa0J2-1)3)?V53knLV zoF{dZ9aFb+4v)OxE#-5rhhau5d|o%Eo0vJ1wmtd}oVD$C^zIj#JgM_O-D1oOrxQ7t z)a6XHRT~+EnIusOi_h!IiLWrlbwz#sdWHUqI0?YD9~(|TP9U+xd)kJuBf}3@h8mp0 zF>5}$ta%CX`N#81_PDeAiNUy=ejIUe+A#eL4|uM9un+_j_Bn(r8~_Cx_s4c))j!&& zW%vjA_|VkUYvXyo7>UU+-T%ELN^W#bGspQMnl(C7c4JVbiHpk|qGV{Xp_NXP z-D8ISxdMNz?14hf#ipfree|;$KmR&`xa`4BbPKXD$d`*|WvD14!3!4Cn|M_lWYj4u)M=+{(crD)`<5~j)-{C<=St7Y8FE9SMNSB*`#9G_+)we-S?Xb0po%NX< z2YWW)pkZ{ws8bz;QGTEXS6r9+;4qq;KYF0u6%GYnO~>b)c<@fl>p=f; z-NuGOMfAk|;zQls&&q1*cFqsj2&HuwIFvubLPEkvOC0bGm*fF9<95x=2v$M8^wJx- zbAMD&&~PTjo=5p1$?naft%sm|nYXXmKV^i8V;8XqNnO5vMK}y;>3)=OO(K;EkCuWbvg=(9CK*dErep;~? zg9wedBWcoT>Lf*aFDnz&kMnhD0le-5Lk2MHr&M8RiA$ExTc$cfVvVk3|Bd9lpMOZB zr<&QK@19#+k}kQ}l*PY83a3Sg@^Uqz~2EMZuOQ!lru>wg1J;ZKcrN`hZN@7qj9< z>GqfzRPLO#aD>#02?#O$@8B=~H2%vMFD)w!8?KYm?dYRn)QYsJVNPytaI$W`*44;I z<%om=xLC0Ux1-b0!#!p?=Enu_q4M(mApg`ZrQjT;(MpFw^QK?L#JEZAEFYZ;8!MkM zuK4))PdDso!-jFS3JNMGEu1OEJQW?+s3B}zUIc0ghpE5 zW3idQ%CQCdg?IJ!v1n?%VM)48m74S|t(tOw#|aK2zSfrc5>kf@eGpLKBM`e>A!qGk zz5QNseETgS+7XIVGBe{ z7^sBdu>gu_!sRL^NF1zTX}%ip+*opxS{EZ$pOq1W$MTj3IvTKoqR{mbxRJ8M*_SWh zV%L223TEcDa!MgFojP^(e*WxwJB2T-t-m`h0`~5Nv5wb5hV=b3to%%jV`Y zKfSvA-*~DKbX=kUyx^IOrj{1Ban0A`;nas}1>Au)*48jBn@8RP2HCfL9*>qf?e|U+ zxT2yWBZap@OF+3%F;tnDe^<%&lZ&DoDd0eQ0S9Hbun7nYo@WBhj)r!7^Y`@iK&>?d zH^Ks*t1}u>M3C%;mB8;D`UGxEb2+(zfW(48M;r_@25)<(d?Xjur@#S zsi?3H|MdAfQRtW7U*p%t%llMLlr0u=VBa62)KVpi4N5#c4XMIpGafI!AY))STsyEc zcb%%mziM5*BFB+&x0RVgS-C>5V}9!s;hNUNcQVp$W6>JjwQ{<;&b4$4AeFkWD7iI$ zmyuVqE#iiW#5`wX7g+$X9mWRgw~9)qKNqYJOL6HvHMg0%G9E(T?$_;l;5%DMSG8{I zZ$Fi3l^ELZvC=2^I8&m&2A1&<;ZI91xT%2lpru49t1i_ACdq&VD{(TOE-1pC=fs9usl&&nP?$LhpF=Z zPZ2@3)~3~#E%O{B0GZ2tR_5Yb>59Gn_KOzo!0HV5_KD$QN}fZZYa#iOYkvW}C}nKk z^fgrvp6L2;;rim7zDQhmifARL{ov>yaQVDC`!Vg5{!Z zfwd4(;WJ`cqdKPO`qUq1LZ?=;gdLnZcZBVU;OxVwI{h*86`=bVziZ`yXN10^z*@19*HCy7#LVQJV_U% zWbu{Zh7>pW*U(gFvy#2*Xyp|3#EE9d+S@$&IW9{M@j+rw_1 zyH7!BT%L7@4ZidV8=C>A3pz23Ll;5a3|Qe|m2*b%`s;H8f`Pg%(f@89&3oR2!e`qP z65a0D&Z~dBpk5yyTzX#|ke1Zw|Mj0VF>K#%PfH`h?`YNA-f#@iI#Id3v`;K8DLgZPd9DA0-u4pw}qp2jG)x*Z`OJ}hFuE^$}m%WFu(QL~OkqPC^Bd*1qK z?%Bciq%R4GMW6!#T@(LRv0vMzTd31zXKycJ(>j-2X({uPr}+gLEv!)Vh00`&`+3$j;n{hNtyIGR^cXarwhM9ho`N%^;uhUs)X-meMXwU zfX~+h0qK*H zFEc!(wEy~RLhO}JrAm;sL*wv9up(oFh>+CzZD@Y}Qv5XxDtY6y+j#5OXiVbi;DaAa zEb6x_@O>rK)n4dk5b?c<;(Cm#AH`7{8XEQ{7R_@&E^QVW+pT2tBpO9d*7-v>2-4=y z#-uJy!St$PU%X&pVJY5S&lS#FoH`AH>{3&v0vd?o!S^3i0h=c@xEr)ZRLrWX%Eul* zaE)B;7U*Udi-z|3aVLs<^&~82;i>t;7pq{9816GhJ?v1%IeFlODbeFZ0nhi@UCKsA zBu**k@4FPJAyxo6Md-Js!g&gUHl%L*%@?zEXDcPqUvQm;s645j@iRJ}it=x_C04~v zs-$wbsZ(lJhLP{A^))hbTK#?)6QgT%%EW}E|1=O^4=Fe|^n$>nrKx$H*Z*5$T10y? zxR~t)6%M^&na4Gy4C`G~C?25^&I^yCIu`IJGL#VRAD<-di2R-mC|*8-B?_DbByXj> zpfC&EEJ-n8i%bBd7+RA-;yP(|hD@#Q_QKf<>)dTYJy2`ox==SHXege&d~DF@a(wo# zjh_#d#Mjd_VVuBgG3EtYjuno;UDE;%O-DftYQ*8}ebMYN@QW)KDz26_n^?pPi?RCH*B_;}1^4 zXon|D=DD+af>^QBXUCbs<_-8Ybk_C{aXQcgzJCuC8>|X4_^M-P!`kkjld6^he0+m6 zk}3x-D^E-w3THeaX8Cb9W0vJCKOwN)7sv0ctuBzGLKD|PE@!vkw{y@j#JEUX^!_7V z+>|%A;v%k&YvGC0IDgt{)-St>`yU(Ad@PkZ8=JROMU|uGR*65-h7;9CG))#6RX9NRDQ=jdAho~!t(_h^($v7Sd5>Ezs;lj z*ol(0j-U9QwLx(dVsfm?$=edM0Ql7V6ju{e_DND+|C!8PVC`$R$K4eV+`q9_YH;2Eg4LK}=JR+O-U z?@eRGD!A18YCgp3$YIfln8EJgF3&@Gn@<$y~=PA#&xOvTF;Jwq}ou;r%V-=W2?O(!4y+vb<}g! zxUTuM0O9qaNcv8Oykat1ALFkbmKeXoj_=T^1Bc06(AqgXmQ+$uasO5Y_3$V%Df0>1 zLx?~fvyk8HQ?K6if~#T|K!TL?+nEC`Jhl!twchZe-rfrPqYB7)Dd38vFZRU|)fa(3 zaR4c{vh5|2(;z`v61>uhu%*!ZPwc*M?JIz5O1n78(aBG_2}DeBN$`NTP9(S(z59Dk>mzT_daAXcCF+Z*F<``8c46 ziBK{?vU92^`gx{eIS3G5ivY^rp;tgbD-Sc3h9)*BazD2iH%oV{G@xh?7sRoXqK|0caJOxC1SrI+N@ zRFja8dD&~e5&c8)%>7H|>)Hz!Sb47RtAcgmM&>(nrNd%vWkoOUa(2?G#?UjBdH1}>bX@nv&l`Q2dJVd zJs=WDTGTvfZl1f}hMKDLmz3l%VrqW=TPT&xZco2RPE}uodPp4(eQy}W4m$g5eMQK3 z^(hO=J32qFm$+ODibz5F?@L)~m#eV2eXH7rX=iwB%bCV>F4p=~T=!vcU0PZWib!K& zVMfNdEcaD<>o9U7gn?NAI?s0>h??^C$+e<*i+VjA^c)6DgJW`@orOF&qgA#i=&wjv zuG(Cx52HN!m}_IXD*9@sDTZ!y^I8u5sslQItiYehw^p+zRvv3o9k6XGMH_q&&cc#6 zGc07Mod+rIJtj%1^F9txaZLX3;n}NjQTw z@RK3KCuBdDxbz9>BD`B*t-3OQ%x9F!$ho5*5NX5x+X!|L5q&RMGCe+7WY_2ZXT6WM z|JvX4LPf5p`fxdP+Z)vSlyCMC^gtXhA3|_O@{cy2xY2+A4HIF7gRV}lrKKg8VdY)} z-l9cvket_faudAyiDCNV`7L}e9XVa#ZflBz5blOg6=e2m#kR&4 zNKTIqElm9UGI^PoycPPkzYxV0MV!1!&&raK=sjcoy}YGErxS6=&w60@d;@@gNt$6y zbF=IS5lRs#2xc%N5?&Pf2R2@^Ly_c*TqgAbTUl@BJ8KFSh9EcP<=c7_8pQ;;q!Kvq z@rvBzJsOBf!tLV5^8*lm+Qqum+!+0`=`^4Wn0L@aOu`OoqA*S{)0(v}sJlUz=uaJBw7s!OKHn9Q`UE;h}|J z3*KfgN=o|LjeP-73Wc<(spZVh%(Mt;oK7wMQ%R7*W$gEmER9e7!vOb=TAmNp=$Ga| z7Pe^9;=zrg(Y)(t37iiMVY_eNSh4$ zCsj;YQB~`#d3OrmNVI{+V~XA~W#{IKdr^Rz*&cm>tBq*Sk6((fc1|%Af@oq|TSa~= z_8qB;-p?{W8}(N>ocs~``*W0>3-T5TeBI=`;w#x-s8%a{0_@sQok&0xw--<{R5Ubwk8A72@e7F6Lx z4o;pel}ZZvZMOumu<&l$P+ta0ki!U_q?uWA@d=aTy%pme*A@_NlAtF-PLpo?XIZB~ zYM$5$xjZ6NOV9W|_$J^ zvt)JbF@a_3dQc%f0GYuBXFcqtm-Kkqwl33IOxLVetP7%^gV1_=clXvdVxmgV1}YTy zseQ@hI6PH6P>0jTR)3BWE|_Cu8O^pZrBPQZ9m z)N1n?nRgg-?YmD9YafW155(e1V+Q#0Tao>M?z9^%d=pl&3p@*OIlXSB}9c|+q&43&zj(%xibdqx)c)I^;# zcZANZZUB;XPQAW1S9SFzt*J#;*E|8ed~vVa=?aR9iZ}g^>I&s)=p5jS+|p#^QIyO3 zjAFg*?K?1SkXR8bx2Bc`bL2-n!^4SVW2pifVlV+&K}>`%rz1D7;m;O!x(_)F47O@2 zV7trx{Vk*Y-QDHdY)L>ZN9A5ag=?;=P3h>k9jWfX$8z{ADU4-TpN;Py~G=|D#UrU!o~uV!OusmqGn?D%#OM5Bbn#F`iv8j&SV zG^B@Ok6tV_HFA1oW(VDV7hHT#PfsBN^mdDP=iB!=A9eq{pQ)BsTj&reYiiN4&NP#h zFhv(JH6Cy3yyPG*y1O(m{9|g}N?iNY@xXV%+8WrBUNL64Ld?hU!Hjxh#7sT9%4omW z$vBxFd^7AwcYVKf`k7n{Yu=c`%h&9lS#MY@8hB`I>wJ#G7=Rnbh> zgld@9q(+FSF~ROD&Pdk6fDE%k+ZWz~4>r>jujh;`T6pPUwXU3W$BN2CW1f0&o!!q- zm?6o>7PRd6ScL1zIsZu>(I9!`ANZFu5khhJz}?iKH=wc(kci>XdBhz@M8beSHkt%( zTo$)ku-Wz<*AzntAPvJF(-R#(r*L_mru)1_Ap`|>c(X6^ zwGF|{Do>+ z#w#5&MRuiF$ZOnBAQh}qq;sxFbEo|9HADRdpG<%YRB4Ab5I6sC?ky-d>|`XMp~^P9 zVthQm8f3(6^y0_3-xmb3O#`Y>=%lqjK+(b_v~0ewyvD4$|2e z&=Ma`;cnsAsK+e5EhjMH{uBP8AAWJ~D2(_}4StagU|}mXEyn&E{twP#i2mJ-qCt5j zo@U0!jCoXp*f3#Jnlg>^>ip@ghe&2Q%D^B-;Q-x3XtjA7i5aFdXVnom;k$%qN_R%s zyCPpL&YLybcSVnm$7mWAwRLt5G|R@uFsrMp>xpV;YP#C$TgqzhQPKXm`|{!&6veV@ z1r4cpWY_%Nj9YJ+9LK$1jQ3tL+e70Ka$Q(h3F|47 z9(AKG{_sJ5;aJw&)MAmC6L%;H8n~0+tg4s@iT6CwFrSgab)&4rh*GgbxM@!G5PwTJ z8zs9}zS#@!a{{igFi_}XNT|As574^ksC^#fmY^4S))xgF9-EW8 z?Wiy#8AYK~jB48`8V1Su-`z0#>^Fq`1FT+1sQrnVyw-nW<~_BLi_#Eobt5C}#;5%D z{M$Bp1N$e8K!^g{c%<~EMn~6MN5-HV%{b@P@=R3tV@fOfRmuarSF)oiexkos#VzWk5lw>#_sE5nAm$$#VkzrL~&a~j3^9360_ai z+?=G`eGYNnN&B56oR~qLZO6=y)%{l-NkmNkWFM~URUrE~-+Wa3@xd9NV#dzV$qigF zL)mYf8S=60VM{y82(|?9>GB4R&i?-e)$}#X>i$G6HqFyPagwlUJ?2MZr67jr#!{uu ziv!j|M*9BD47oE~>}Em2egJ1;uUSpQ0&dOKdk>Q~FE#WlhVcAOTjkigfKTzXQtG_KvDb5H^8qmCaKd<1 z!tdn4BQf5)Jj?QA5*J2}t28 zl7qP$hqU~HG94nf>RP`}O1axxA32HLE2BC5Xm66GQ*xASKHB83{+2%t|ugz?+ zroT>s+A+u5n<^(ZU!|9KuP{!9;jg}Y zU$&Ul+Y*>fp?Gp}+r>Vze#&-MC(`~;m_F~NbenePS)=0ugCzO+x=df@!XWc;jZLwK zx&`iQttNPaiy{6JD?@%(%MT(wS0x_A*>GRvUrHI#&Xc+7~TGDDB!0v7^S7zrj{6!kRV{Ung^=BEB=H&43FaQ`=Zbf-ycf7 zW%8=7rOo)LJUYf-Xa;|IYWS8(?B;dTZ#%_6O`KG93YaJln5ili)dFx!AWyuMb~$GI zm6ks{07vIy8+A|zflL69Gl)!`HE|lEy|b_L-ZDKAjvd|&4@LeTODhq03zl%3G~R^7 zO1zZL^x}Wwa*h`nV|qxJZF)yMMCF61X#vktSg*Wq-)>V2^j^Jtl{Aj}S>>BQ7^&g+ z&)Q84(`PqNlmCEj5Os$OM(AGFv1^9?E0Mh(cO;=hrcrNC31stN8G(!2;OWynfLa6$AUyds?hQ0a*vP1_S`@X7{C4_!yAW-paRYusv1Ru2XBDfOjxNc#ZR62g z>)q92rHHf|QX0yv#MGD=0c;#bl3u`Sd(Xcn)nrp>V{}_@Xu&?Y_LTr1Ul+PXF~Y2= zwYk--&Q(T$ng7w&SXk{_rXhIN_=@RFF%PiS?fyZDW9yKyN;%*x$#=>Ebs^^FnOeIG z+0JV#Z<+202dJ%89R`J`=$_`OuxJe(W@On61*p(dF?erws-oBYWT_NS1Y%c-@0BJj z*PqwJ%kv*wTU$61qXxFAGlXyxdZ*4Bd4k2eTyt5GpCs)r)@Jh)f0j8fBHH|uB#5RdHpN0) zUO64@X(IntH%nh^U-u0RG_}h)D-n{@{;yXlMWYGYJMJKx+ufH>+Le%-3hTn@=*-xdS8YS92ki4OytcN*i29xr6D?N&!00X#D`scj`ZUaiv z+tCRLG&GcD0fR+u)I|jX8AbF)2}wx+(VUjr&Wq#QmX~ROi^LU8oOtx7fh*wZ4F?FO zzd&K8xWp1l8rh?Q3zNq=sc;Kvvvd^&Sv*8NWM8Jb|z4=zAXz-)!R$XvGix+f8`(UN-J_4+u+g=-PcoaNtATOQgUr=jm}1kRUR!)@14CCazA~mnCIZP zk1%yx;3kRqbmY{6DQ1ve8iz+2(NL$rgdPHr!&tXJ3^sWIQK8j%+qzS zW0b0Ek;L>n3!MT+Z&QOFoj6sjNP)mANqZE&RfU=feXvD)MJk>T;{AJY5g?_A6WjFX zr6Ql&t*t+uQxPm@9~ZJ~($tOpngATu4%}E@UpV^lyDEB8HBT^Y(4?>8uLoKZ(q9Mry7G@@04}joWih)Bl!2hypIBNEqH;Tdf)Xi)Ye{{=!Q;-mN_1a}Q({ z$);l}G$~tYMfjR>%|_MxM0`zy%nvRW0fE7hZb5Y8{VM1F_8#5W4fW!st)6BBh=7yEN{W_`Fv z@&@iJD{mJ|(APNNB7vIeVP1Ak%@YBbS*=H?9LOt&PZAFt+`n-PEOe2OFp9b@uK)a$ ze=ftT)yx43MaOZNA~VYMFn=of;82(0c(;upBDrA^&&tL1qoX6ks_Y{``}JOjG0ZU( zW*5R3#b??#%b@GxpM!(>_=Gq>5zwf%3&s`<4Gib9{ttHp2xx4CF|7j$B08ReIf{c;# zKL(XWzc}GVJ0FHSo$QJiZr?n&2Ji^J|CCUn1wih9{z((a*MkF&JN*j}?VmRtCS&Y}>H`$i~}))a^g%~02vK_Zr4E@{0do^V>yx^Q(y za(JN611owT-Iw>JS{a&3dqi;)?hF3^yN@BamV24_rQQ2%ZPeGk867`~1g) zF2a7PtdxIS8^F$7?)G2E;FM@fGu^7?!=2r|t+Kt#$jVqY%o;+3{*;0%U%V>T-|UJ{`BWiy zld1$hzilRto$MjNSC9_V{yi>J3(b4EP+}N8hIE_oTmmyUUFEaJ5=jGu)uSChA=tf1 zLp)p0Qu^4Ya;sPq-y&Cd+D=q_@*=k>n^s0Ek|=K1V+E*m-M2Q3z?}8-WCzDJj1k9? zpx+k10%O+<1E-7c|-3kfKJnVPafoh2ZsaBrNCmOw$z}7yZ`)U6M<_n6E z#;^Nq`=u;Wb1w6_yZ6Q0@Pr?qk@)V>yDz2&rV0bSyd;Bgja~$oDxDDN1C_GYqsGaq zkgAal^)`yrYr`MIiD|bVeYILzO6NgoX5YBOy9M;*U|JFUW65PP)VjcGz5#-tkdRPU znPBsOKXgIIaqR^Pv#7R+L@-F8-38`x^PHMPPf0bNlr(HeOD`_ySWF%gF`AA0T-o6fv^L}Pgc875)|8t znkP0l>K|_{|7%TOXal536f}T5X}~IQcYQP`)8?>=OIc$Gbhmvx9KZ-Upz12Vb^Y_y z253m%GHJ7#6#=~o5}A;blVh#4E*}qO_3l+uJV=Lv=uUe1Ts<@TefOdKP-K%Rv;i^vIB6(6R%1H&5&&25xTw zMHyDmmLIQTH^DevDZ7P_Pitll2bk+K7=}B8zXGGe38|^mbJHUTXdv3LcAtJ_d*Qc| z4xP6)Y%tTL7`Yvro1LBS|Z4Cgk zOL`9j!`%3Wa%0~fm=6T7m3Rdod$5=5vG|~6>ILHsy|j;BzxzrA>5qN13r!mB@))g8 zzJB?lziRLJ94`dqi9$}J30m~h4}lRcpSJqW*JE`Grrg0d##B9(;)(-9ll2ZbD2H}| z894oiEJBS7sjRO%0jQ1YPV$BOy47TZG_4CzJu&Ii?8t;EYE;75wQ zanSCG@zmjuDK-)9`^&Z+|L*3eX0ohjBVhFEn1mrR;Sk4b3kHElAQKI4s2^F!RY0AQ zoe(&T3SHV;MU`kUZZ4=vTLg49WU8+mIR?1VIFHk>kcosYHp5S-3!#p>k0y53H1otV}Ch0Ppp!X z(iHOedvMgE8sm7z?Sj(M(vSYU_Q&D%ohP8_TMxz$i^K`4PELaWdD<>!f151Ko4jSm zf#;M5%%vfqK`CPXrjgSi2)#`E?1O*`p})>$@lX`ACkjCOQ~iUkND&e%7R(t;FCc2o zTT8^+eu@!zi#HHGeQ+8c0M_}`>IW`F2=n@Tp4%d)xcgkQWRjV;jCNFVvg^V`4oMI( zYda_Tp=sgpx0ZcE6Lopze_Q2GAAnZ5$?QWEm|#y7vKh;&U6e_istMR^|NZ8ajEpQ0 zZ&6{ra4wdMumApYaxJX~&K}KebbCG~zfs6pG+^d)am0RV;P6%Pnxoa}7#UwdL5G3I zV)tBoYB)p00#A_ZeUapQd!C_-C@();6N01dBXPh!3QeaSQRcS)2DsWzfu?s)=Q9#q zvhUtT=Nl6`pnmnA9ZuPd3e@cJ-rk#>60bcUSbg@r!ii2dnr)Vhp1jt+M^1`#0d+ck zkm2-}33SCDu^&vq=C>2evzrT4SMmumv)8yI-W*2@N5aXbL=r) zI*dq66)ible%Cb$Y2fM|flMXrZqFEBf3>xP1oQCWYeu1Lh+(M8Ca%T)rYMRb5;sU$ z9Q*HmGoIeP_f+3q+;?wcV4zffA1I>fyL)=TE+2zYU5y|6)@o__v2GouI$F6XPOVm} zwpbk?#3CxFBdeI7-+~eaq)wH)TmsW5K%0BCYae(x8Z_Ey--s)2&pJ@E2SU4s?O_K% zD}i|%R05B|+Hv(^C>|t=$x4@J;QkuPca+D+#`qnd+f2fkDLdmPza287Z|h8s3Fw}k z!OhU@K;PzMD1=|=QU?tMHyp+-*kz^r3b?1hFu04vUThxwlqo!x8_aHX^cHCYA=R1b zX%Z75e8fpj9mQ%Ypqo`=CMUOW7^>%vxR_sH@DqY&+&+crmQ+^SgS$b*7t32?-iq#1 zqPWhSbUZC>rwi33?idgMoE+`gToXDz0S3cF=zyOBX2-!BK_-*A3CWBP;LMd|44ujSZ*>f5v|e^f2$TI^)SV!4x#^gsN*NDEn)kz)a|_vR;$i-?pE5o z5TM5s{yixKh=n>1JqiPedFy|7Wzfqi#yb=gM?ecSE5&O)48c4wH^xthZOX4g#C+bA?88jk>%fMWW9`cTDT<@ACZ^9N^BTOPhr>Qwk zcdmS=!_2iUD8le ziPw1Y^Bm&#Sp{HL1bG&-Gn7@w&t82>N^(H07f-B%Q4TQnx;QY8rRFl-g&Q)X#7sm^ z$H_n-4J2>*{9XyU)AsvI9|(X9>(1cTIy(LxzL$>HL|Z`od5d3Iv_^c<9e@M)W zYnR1UtlRC&$ZYL}=Dy>l{mmepfuTO@cDXIEsWcSOKsZm-O{NFXBdnhI?N|aKAGkfi zHnhv#hg;X-*NpG`qP#5Te@iqQ$A3AOYI#HoCP71%!L1oy}ypCD(v1y zVFMLKq(MMZ>5^^`C8VVrq#LB0jdX{UbazQNC`fmAcX!7=_XeNmyx;r#`#a-|Gu|~A z#$xTY*ScfQd(L@X*ZuLtr~xop*KYXC<6>_s8J5996(IgVnhA?mY2ajp4p|cp_!&`G z4Q9x|;lA(ZldNT>&VA_>5vVwvRQBS{T$BV+il)D~hh-{T-waqvjnEm^up2@3I9m9O40SgtCbhuC|&`7K}E=-R-C67T@RlWMj=tSj*;t{3K z28yRW1**bU+lL3IHP#o7ii-9dgQpIwQkn1H;Xq0Kv7fgbw`~)BL}v1k=8>z52x(#Z z>8!EzX9ilJ&9yd0!rL2P>D)05M!V)Rr8K9+>UQvBcC4+NqVndxo#Z)Psj7fQ$PXCa@zRWv$IxHPCJ4+`wL|~z14);+qA|w$Fo@v zc1BXFQugsFbM?mU0CQ4+3fKUi!@KTGA|*=M5@@qUBw&PwHy#ob z(a>CdF`}k{#{EeSjR5o>PcS(BOLcTNk)6Hd_1J~5mg(YTMT}xsWiaWoniLh4eLK>` zG(R)lilYw|37oXOah*@aLG90>M<1dbd~;)2#2U7wndnj1Zuf9KU{;8?R=VhVSLh-? zCg)W0>KT&0Wal2B>o?HxWu0l2d($)stvhlkGu*A7h*1cs2j7TtIv);PB{?6vIy*PD zbd6P*OqIJXoyr-rNZ|8!?m~weTSIPA`EEF@^j+ub``jpo)&Ndp7R*;oELFev`(JA0<)}L_4rEFAIG8tf=TYTK)EN zMX?49F2K&x^Xis-6wP{V_xw@2=tC-M{qbe189mvsQX%szQ~?+#A>qJv}{D=W9r5 zx%#bVop9Ra&71=_Ev+k93Qwb_IiS3WjY{0zUe2yq8S(Cc>hyVbwcqAA0SG)0H2}4P zc(5pA?%O%~KqfV3y?9kRM40BG8wK|*q6iYW(rR%fFi-gZ}3*s#WEPain&X&AZbOd}y1$m8abVpgB#RbHo zfaJ*uZbeS!T#d^fSWW<@9OBj(tnu3aH6CD{gOvgx9_>y*6q#LCG$2$2Tf?tK)G-Vr zLk`|YBViCTCc_82Zr#r2#=?Y+z^c>6#zx-6Cx;a9xQ-_RY9t6`o!Yw3oQm7=rS|{h zHQJv%Y$B%I?_i9!95H4#umk#3<5g9Gf!)BE0{svKM8u*m4f$Un9Y`!HmEpf4E-nsm^7=P*ktMJ>$RC}z zNyguR5C=pZ0OVC^GR1v8MDI@c68h~Ia9{_y#Q_S1pcV`k9SX}Sp}c^&Ac^cb092op zDk$0BF)>g&0@{(w6=Fwcr{h(@7bAEmE!^^BY1{{cJkwB;cux>SM9^??7@j@vw8%=xqzt-d4Yp`Y3X#MkH%gm32-oL*eR~2(GQ}1a z(Cz87-sA;$Lg(W@gylItF916Sh(hcPHu zZQiADhPxkTR0GHk+exH`H-&8-#m8r84HwSCocJS@Jeu>;ljeP~4%&RPi%3udlI-mFi$5 z+~1f-;*sH^3h!`@WpUm1Bp42cF7!VH8~{BK)pbUIB`Jhu(PL3g8?fa*eQb(lHI<$G zqkcUQiu9Jp724F22cmQw-i<6E+$Eg}P@Ry=h~mYgY+!S7!fuoUAMQ0+EFM?)sMxt& z^rX`@UR1t?9RK+}2USe#4i9Pl@+0?i-d&J%;q1KmK??UqxzeO&Cy9INb|Ov8aIPX_ zu}1-BOu#ZMmf1L4<~#Eo{n42^b&1gOl69HRok97#gqxJQ)t0lQ2W85UYOVo+3}E5{ zenH)6?bL!x9EY8=E<35*<5`z9utHBsSpYmQ7BkHZdRQhCX09WM# z9!~pNC16!N_3@;{TrPXhI(K+>NUsr+zrA8;s411=JOQX{bmtB=Fz*g+vB0`MTqPFtA!5&XciPJ@y0oZSvG6 zU{y@&&7X!cRMZmMq0>kc&uzDQ#%z2J9D&?1HSboNAAw6Kw}%J?Bq-&ttdzvz8>FK* z%SQ(}j|Gg5otDb+sUXmiv9>AjgpSN}KzicJ>BJm!bs~J936I0FL@prHpWr#hJ{}`v zuSLs||5oC^p{vraQ)DDpLo+ct(&_a(+b2zrHg9Jd=M2v2?C5*3MITf$L%kDv>#lq( zddHn_8hMM6@T#WR^rvfF&VES>2EF0Y0V0D>(gOU0bEc|3g$tgr7O0S-qqXMKSF6ru z3qNN6Tn2z z03!yyDP#XQAXCL01Hh;DVrQg-odju z_(>-MHmNneSt)6Dxoxcdm#G@gmkXPb2!KknwXmzFX|}t$I1SVSfy#_T44X1J7r<(X zVs+2j?XTxBVtEp0egiq$OBx{UqrnBq^bn6s%yM)d z#rkiOm>Yh?mYC^Ps>hRQzkasBiYvn8xdiwikM(3eySwxMngrc{{rcw*^y0T1iqyom z{LiGeUo&b6S^t9L--d}m-W{QiAYp64nd;F(Y$jxl+!A522(A?UFde*3`0qAysA^jO z$)G=Y5K0Pi=>Lntt?&O)xc%2o|3|m?e;F44FBCrZg%$cHUDzC7$=!vki!^aJh$DBi zN~;}!EwcmPzgTpKb>^23{4Zch1VTGF_<$E5Jz(dOg*>0%og;&TM<7VKGdu5*o9;Nz z$$k$&mhDwFsd&M8V;dS8)BV#8KAZGyJ z8e-zKCmR58uzhkWL;#`ZL-zC#0&E2!P3c>F!7~|#rVl>Iw%;su!PCTBi-dTgBQ`eX zbG!rX*mmeDTg5(K$UfzMCJ|Q+f{X#lm&%jb>xu$tKz;(l|EY`I$6fjS z+2M=wGmk_cUx;5S1|mL>a!3ogeJ!QYOA7%bkDo+lo)Rx+jsFHdeNqO%Ea0B6pq5&@ zkq%J44?gN1ET(hDzV{*e19F(;xwcB9;o4Pm8=Q}~@UKntnG>M!Yy|KXU*NW9Attjw zc$2uC!lI%88r0m(Onsc>M;QQ4XDjX>4X%1%7tbd7 z{JjW^!t7;4En=a^pZb+!K0T|qS^hf#pjtn9jen%J-9N@U79$w;tyZ^#%(c=LBR9F| zULqku0e!&y@X%-f?+oL%>JGDr`Nu3rC@8vh#+zEj?{QDmOuj@v}7qmIXLQjFZ$Kx;j z(LwN$bFM5ZT#9AO3xH&Fa-f8=+F4d#501nwW!*XhNs5%um!>P1D|sy50{s3R@r@$L z6hQ87#~T8c#E#a6Sw-59yk8>*=GdJDyA$RsH`1B$8!PFT;Z!2yT2USR^Y9KGj82C#(}{FIGRvKNyT@s* zHCohowmI6MlEuPHr+TnFfj}nY!?#yAT5qLNoh_KZ>Ngv>})N&g%)gbgC21}Hew0kfx4KKsHCW<#?4s;m^%OjdT5#ieAnXQc9q4*qk@*xliuJU2RTYQ z29~IZh`POgKhRB2xsg!dG(R-X`X9d~>oua;@eulsTd@lyHCI zAZtBcq7A+MM3(r>XHroG#!2ao<2IHniVcY!sFU$89LxBWw?J^L0qAF?ScTp~{2(A1 z&0ihbJJ|(uMW(^F_j&~k&#oKC=xc_8+>q$Qq!djQP${hcwjyYt=$YeZcwxC)pu)5} zl~)>69?1}L{>UJsd}pO-$r$hNW&P}@FUc+K;Y?lL`P$KZKR`j^v%Bg6N}rrI3o!y+1Ivru>x?ZRbz*Tdnd`T)v7t@cQ)jW2 zxR^xe{;Bf1bZa`jg1=YIe?sqc#W?OPcopp!s7@RDZBS`Fa+DnTl^ zTD4Hj&o_|A^|Hy25v$Gh!~&o(G5p?oBW7>PI6xPGRF^u3&8altJ`|m-4_AK@HKxjQ zm;K1|hSNd<*)tP|Q)af#3VKDbmZx3l*Eso3HGEwd*m*ze?^kjc6~ zZX{2ho|U!HVeNL03hIi!Z#{Udfd%Cfu*vBLe9maPEuOPB3t*b28_tr|O=*sb1znj8 zmW4cO8ZY=nL^kV`&>~BXl$p(~*T**ir!U*33o^e>!G~O9ZIBUbzj_@BGJdW_XZC4! zSWZ{c3WYPVl{#{Y_RD242+?%c!t|vg&I$%%2`MwD}5}Q%ddWZtrQNbVH{c}^Fzsd zf-ZwOYTs!Ysi?L9A8pDOuL=N!@6flEz!?J2i(JCP%n>j=*^iIEicxt#bk&P zLxuyX;i8l6W56c-F6nWK$Kh~3zTqHxt6E|7X)L%vV{1T|hDnzVIG4^KPJrZgw)vq1 z((e&TC21ajosC3rX$Gtqc1(0U#CUxYwAwrmVEI zwBG7$VcHAg>FEu+vwAoW&PQGkPLK68-72yrk_{JTdrO69c6 znuK(S@{ZQSzrthH?Jar23*>9o zWgmnc&Ky|b{QWxzujV8F=`1#0(8HbeC)bL440ws$1u7F%AZ@7@T6%A74CLO~et+~p z`w;S)5WXqSrRMU&QAI^5CME{JFs`0BG@VCO4B0cpr{M~~e}N7w4GncHYYwmer5!+(g3%X}P?KzoxVBV?!Ed5^T_etU z3E3Y>-)IC`wni{2nY&hdq!)<|@h`VZv#@N_j%?CGLBj`8dGZC@9Fs8P2;{A=^W6M?U6yM@mXN$DFoN8uAQr z7h2=vgbk#fpV}C^9vo8tNm=Mra^XJn-kwFNewuhf3 z!0r`%$gV2Yu5F2*Knq)S+8%b3083%W?+8|LWk$2)PNZ{QdAS>)wqj#+Q%Mymu{lx* zz|gUgkv99EPb2ue9{WfFSppzDAQ}M8M1Jo6Ra+b8p5Wk>!(OC=WnS|C1*hLRT_-60S$fr zwx~$$_UP*I?EW{px3?>6>gw}b^|jf%*<|4zPmj04_qK2@29n>_j*4NQc}=2#LbMzg zAkB^_zXni$pdl=Ad0NUF-FsNDXtS}|b07n0aDs+?{R)V8?u1nwoH-JaPSvNY7<|a; z68uydv9p;1OWGyrIrm6cm*&lEeT?jbP07IUyen_dFt8omC zTUWVg_bc_!L)K`%s4{+Xe9&*#6@4^by|$lgqk{B?XQKL3Uhj^Ie;^7eNfx=S+fl({ z#%Y9kq)29FCNM8gsteE0J@xxMG<3|VvGC8|t)I?3^FPji!yyWk1~RBv0S>|8@_Gee z`<|W{o$gGqpCO{35RuMKnrm3?lvq#dJf_913($+Qw8*>1K^4M7Q z-?37bfLAa|0do2nNDPcnJpI2Qxf>+e9=s`cb~NBzp=XnX=k$sj(NQz`(d+D`HHWt^ z#)T1QjLSOhJO*GhN6N6+-|Rj%NEQN<0Uaj2>2K~SGc>IIK*V1dpCP7u5n4MjlB;er z+bv8bZ(d`0Q=v)=5c9Kk>wg8qSw*DhgtCAczSO@oS6zpyredEh}+eF}6^% z+34RaI+;r3aJ8PLMmob3_Qv zacX!4O|6MWlpy_jd)z^#NI1BV%nmtfbJ!ts3i-RbVWO>Zivg13}?wkJEXve_#ki zLLgfU9N5-WY3aZzq3p27F?CvgWf#%-ujL7VtQH9KDu9!g|DdS2HpZ3Hws#-B} zF^js!$d9y90Rg>(KIw|hKLgP>#GLdiBeaB>4~Vh<+tOpkF9*IJH&Hs-ZZsC_+s$zutjmY%3r6lda+Y8nx6Ls6wxp*dS`g7sTLAYqe*=@v#?O=9bj}M+G!o zO5=Uve4Ju{A|2>kM5tw|Q7;(#K#hKv*ZB}Aqk#!`OwF3CkwlB9l0#!>XyA{5j>hzn z8L;&M{i%~&`Hx=__R_E7i^@ba)Noa`_~Ar3IM1?MoDUj-{Rbzr!idAh$Ae#)mcoQP z91ZIIqmr?4?{ZWR$O*ybZ2qj~MgD;8&uTWe2aP&?$+~ym*e%a@MDfh27D&a|8BD1n z!vXI-7YL;QJhg5wDxe4o%$Q?UG>AQF9j4|CQhmd#1}>*{0UJn31&HdW zeES4h@bURHeu&_buMmbiJ`-OdGjQ!Qh3Q%@kDO^eY zvKyNV8l>UP!L86sq{kNK@H{K2Z2%N~6l`u>;F(q--jn2s*boPUIcU5uGqS;wxDH|V`sjO+7pIl6dH z&z|r`G`gf*__J7z%h+6=mTjM$&C%&ibR%y2EJc6v%gKLD|6=?rNG_D$j`9^Z>hbC5 z>Qa!3Q@UQ?CrpxspmPlf5B#&_dvNvIl4#W$txqynO95N25vU~)!ka4J)@rGns5)oy zcyJ!$q>nF%byWICtHf;YEsBdnXOM~jp!$yU{ek|O6fBo<9*qWaU{(8PBNtSq9bMx< zWrQ1NAlKn70Nu4`ueWrKf&%PFff@h`m9BOHrYI6#PohTlG2n>)jX}tbrYPB8G)^NN z92_i~t&%A)!l;Gz-AZ9#W4Nr3Q$-&E5ts=C1vox~fwJ#~YYfwBXnn1%mqD{?@-zwD zR+~RTG#3-QdM-azBcRQP%wj&5Rq=Dvo2K^APVL~ipFiFtEQ-Jx4DDLkV%d>}=}>&( z`u6P?1n{)BZqIc$J&RsYab&~8QHm7GKNrW*eP(lt&sNCd_iZi(4S;$9P1xH1)ut?C zD^Yj{`WTQ6z%L({?mt2n$TFBTDtxWr@(q!WCD#FtXtBwwd9aW z^da~GJ*!GFC{hFd@6+`!O0-_x*Nq7AfkSOkSv#f4yR?7q{@$!}8pD`{*Wr?jnTCd$ zW~XCl4d{=&<}?Hb{H$Pcq+Hurz!l67ApQYHnT5=1JUfJhmWPO&`^Mqhy8GO%Bl^B9 zX*jdXMPxl8{EhmaROcuuJITtH1us6Y3s6#FXJ+039u0)b$B@@wf$FGWQX%Lst)1FD z)?FY1Ls9Wr7AW2s%+=%&!yO(5Y(Tp54SU^rE3QlF!1sVp|J?}C2)UxCp{bV-%Dv+b z-t`-Z)8k@eM~|VpGH-!MV=q*DEBFS8A%QSdNCL2{H3dN-G02GLf~|I8H?~l{_h&x0 z%V2gcPo!1n(QX_!ApU~I^}$Ki2H;GA-BjRTAwnG%{9QmC*n^DWpq61`if;V=w%m0p z!3jxbXb^1t)u&N&+EO_boWxPY7Qryf;=Eo<@XA%i7)kU$Z{9l%fV4mlwDHXJmJ+~(pMj-Y4I9Oy%6qTk2q5Ud2m+gsv($Kbo8maB( zWrmn5bbSE|T*C(%xvm!1Cs_o6Z9gdGl5yI&_+O*Nft_fp!R!O_M@+78C~+ zhi4`0B9|RVePl_T4>tEOLv#zJs~5exSmg_*YQVaxQhn zzjI3+C>^7&ZfpC>&1RxGn`f9meY3TU=Q=&=pi|k)niG@CY#c2e0u~eFN(8tau+v2Q zZ`L)MizAR}kZinAk7)xUU>;|ec z3yaKPsAW@G(hb2==bIVpk?7-%0V(W5tQ><;G2mO#8gGt$CIawzTp1h}Uyfvf#k+Xi ze&psf^9|+Kwmw~CMr*PWry>e_4-4v@{a#$|G1Ey4;3_qfT(i2b7p~0rW+B@G-wYb4 zWQqq(QmB94Z`3Ek1#?i`Ksv{Pkt~7B>0te!^r56X$d|3SPq$1IYk64$5VqNDRia-9 zRcS^-f(YG>?xeSAEzrlte}j`47Pg=`nPMy6IOb%NBR`_TtUseXB2S%Iy^`dzMyrnS z3bCuZ+uFu9S0PKVajX{Wo#p9BdrBjI@lE>eyOy@F{8XIP;YOcAk*9);fdpI&flFpjvRBSbB92qG&S_=Y2_ssCr z_hwe+^YYsL8wr)%BIT?s~fmmDa={6Xykl5Pvj}9SnqWUu5$?3rkBv(m+4w&fIZK>Gm7+qMl7H-4~ zlRdQ>5Y~E-7;9n=N2sO#Ak1iV2r2cC?zzqUa$jcj@&*X` z=|IEs@tiBjud7{^jEy}>-hSnAb(V2g_j}+*1d26oO;~tnafykyZ2KEU0YEcv{}h)S zp_boG%En+Q|A+p?jgKT?@=Kk30C_*ZAuMD0GgH|{mhyXt{_;C0`J*>r#iR9AVLv@ z6UqA*7xEUrDyejhhjLuHHo^tLCKpY#C|^zFT+UQ ze~#+86}+$?UcPAMxZ{s~=$g~Yg`~kc%We37+l^Rr;VUW;tU+F*LA>s+Kz;aeN%ILV z>>T-v^DUTBa{CJk(@fXS7_gJ)S9dJfz>o(iQU{E8)m?JcYqh)8HK>H6h2Ir{-5Tp) z7yoVt_2k14IX@Iw*yy&9ebdu&%m@1o;Ri)F-}|#D$ar_7pg;%gv3$k&{uh!^pOk0} z=Zcll9dz}DgjF%->K#DE4TdPkc>7N5u7>&~#fIQn>U}ld|AD4dAPOq!-JR4{%33(@ z>)&4hcW%A)zA*jd-?o8F;B_eB(e54z9|Z^Y5x00`LTcsva~~f5J2wrkOZ7#6^uRw^ zUlN~+Kp|VP8aC0~IPPHq0N)OB5`^+&u5Tkk&P-LsT3{^*j+QWC04@0M;db!9wfbF) z-~IakFo*B+39!caf08-;|Bg+x0m{TdGa3vU^pe6G!Pkqwu2^VU{%ZakMd)y_%CZ|D zu>=3J`%`YIe*Xhq<#tPUP4Dv0mXVj-Z57Tfbn;(7mjL#^#2KuK|3Q*mByP1Y31KGy z@&in6FasO|_EGMq;e!YMJYWg(pX1*K=9e+>?e{Ym7*9o5HTuCZ^3Ge1e_#f5tp5%C z0nWeRpa{K(h=4DqziV-H@P_SIP{;F)$)P8Z2Kn(sSo#)97e?E z{~x=b6Pm|{KZybRF5eyKGO!16Bj<otVFF-e_T3ak?t@e# zjL1b?gp^Zn6N3vsC_C$?W7?wl(*hC(f(0M!v*d)tUINefVE;x(fkPMp#)1+a@t*-9 zrB=Pe=6r!eA(aJKo%4Uc`HoD=#B&GcAzyS>a*TMO85ZAG%$?KyFQ3kb^PXUg+uy}fPPrLPI!+k>No!x`dX97`>7wSJfGYy_`-$c z4e7fNik|<427Q1*gIYsgp~6hshXEwCOA%(l&wxA3|Lpnw!=^NQ{)G?1#CyjCn#)ZK zo%A?TC$K;L7XqQc{TTZVKkOP1GlaiS4u99?CN z@Y#xp6ufPO>@Dh*v#8sz{`dD|`1~sGrp?0GBgkAnLD3qRVZ=E0^4;P9IbyfG#%gN5Xe6UuP=Q~a-fcrLORPV+zK z66`8){MUG`*Wm@gDQJREe|Wx{cX%QHVhZ^`1y0z7@BaUbgoBAqe?^|_yIxzK08!t| z?J?`m&?tApV|#sd5s{k3i4C+%7Sr{Dwjmb|y&W~^*On!s8t;=zM^z+s8Li#9=uP~!9IZ8L_^YFt|Eznl&f&^UV`6rA^)Kxm-76O?=rN=n-adM zU316Dx-cR1XKYkdO548*9{A*Ew1-Wo>z4)k{?7oM0ogyr(-VCJa=IzqHa%U&){9qX zzk9r)?Sso?Hk#`~7Um#<$LYK=y^%>X#bi1mc$5Tt+`HpR8)_Pf!{a8$a(@tuZfwMK zwgGKeE32W8H1`Sz;HnRP(${*re9KQgS64GfoVhJKqrzg!wfD+Dwe4}aU{Zv4a8197 zWj=LHQ+VveXh0n@RY!OpP)en{v9@&ZCs|%Skv1t<$!UyN zF-#xy-Qz1}InK|PBA2}`V-iV_b0%_13ih7a-dyP?YnefHPS&{~*;2fJN#$lxG`sSffh(pRamw81g{VZ^rGHSuZX!t)i`>4Yp*) zxo5;)rl}H}F;J9aP}Zn2IT0R#RG95PvDv;r#p&Z(?Y;vbm~WZ>!e0$!z5ytoV6<^#qcUk;!5{)L>B>MSMm9 zTie|o{cj(6lGr|Os$n<(@G~)SV|R6b!Ut?pc?uGhGj`{roiD% z>l?-1NejU<&r~AP%bosbAs@}>oTQqI@>dZ|O{v>lMm`lAe;s>OEgmVuX1^_= zXdk~=Y)3Li(0azq$czG)qN>zJ=VJ%%}hPhnA zLl7~Jsgg!FIw}h1e0|{$H)o+L+ff zI~e)nb>nd0dkLqnsYGH%2v=fUN^9Wrk<6nuuZxKxo3rJ^VLQzTe$s#b#~9R_^GgAaqd37q*j zc(UJ$wn5ePMGimgWQyifP2m~0_iZNvPx!JIvKkhWyu4y0by-)slHdf4Tr^1}u@XA1 zpqjSm;+iL|rFpE0JrrvmZJHkk_UC64W~Nv{n$wlV(V2EaWMU%g9ogPYak*-Gc$v?DTt`7 zyt!K_9DXKT>8WZYtejldxVOf$XG&UH%2--z+QG{R9{fQ+2hoRdR8~UtENr{}Y%+aa z5~njmeBxnq<6K|=(T3Cf2%UtZ<;^PO@VV4ZlAoh8KqoHK>9h8I zk&bvv9T_I_;P{T?ONLFSxpwVt@YRI<;c2@i^krpz{R6rva||mOnfF-w{}y8n5Tonq z+s|>Ik@UYMV@^p;|4B(qOj4At`PF2?%7Co$A!4Gd?anaW!(BMO{=X!nv-?;WXk4!7Dn(Nfe5ZVxVsSc@;wztM;2-NXp}UU(CP#C4GY~4wq+X`s|80UdIf_>;8*1cu~TYF6Ms= zHu@;AQM5Qr41C82KMhE`HRB& z?HRWbkQ;OBg9Sg=_9r)d4;nFhU%AUC9OJ-~c+0OXe|=AxmO8{vH?@&B>X_>5`<1g2 z_gmxf+jc$64D#o$_b23^YO%tQcf~m~9{Oy@M zecqyyy9xZ@O8}WrrG?Ny6^W2{yc%cuk3aJgFCA{?cN-z!g!Zad^wYsp>Iq;w1rfM( z(Z>H$(mMBP+J;^aorhmlLWq>D38?um#HR|Mu4Iz%aMXFB;VqN5i#S=DaN3E;OK%rv zq*XW5Op62@(iJA*?OxP{Wes;*-G*S3TvRW21=G4b>sD!VI16uMOteQ00UheRt48Rm z3wk7)m2N(`;{X^Fru~hcO9Xn`^*`*vhmbz@V8qkaUQDdbuE+w859Fjo6TO{MpkWVS z4QtXpegv_OX{`o{q1eo;I=MS4Os~)C!DY@Vxqrx4`QZaBbL~^byl!i8? zZuYz;M{gP}F%2K?{8NaxcHS~2Nnz-~9}t=peYF?dLx!}YTdWw*Z}I%OxT&pMXj8c& zRi#<|l@xh|Z%B&YK{4;Ie{ESXGj8*&f-A@pn>!%Q*4EkAao3!{hWhlJ^`F?Pa3F3~(^L`r$vgN#Zs6bE0mFAJBzRoUUdW$jO+#o=E#7Zsc``NQ1U z*d6hXCAx=mk38wQ9yWz;J|L>Eqoy4W;W9H{`baBG`9<8*UMzOsjKy-hSW!$WcKr9n z)|l#7C3NR|xg$0tp#>L{o!K+L@^+ZKwN^@idX#K(O<$6aw`bE4^5whr* zkuz0T-`1CnduvZepVmx1Dx#Op1G{)pwu^?fSv#(5inCrn(x#$(ouPaDd;T0dpqEQIRt)yW%cp7iWlUVu@7|Fo8+CrYQtp$Mk}LgH z{1$$3WJsvo?D6ya`NW&pH**xf6qaWj%W)DF8YMT}k6mM}G9_WFLH67w&IjvqmCsO$ z$H8QE(!Bjg0VT(!7V3|u^1&WhX3`_f>s&~KZG0( zY8{T(O?`ObMXY)uK0?cL5_iKpb*oLHv;0nX#YtSPFjL`1@+%k?yl*pV3?JfyaTV6K zc_}Dk8$ZIrgq7h(VOWk`VN$CbviVEg!LYb3DEwnm)6#5%4LzUwaNW9G~sM$U*DI5^eL1 z53&$4F^*zl7!vMM(U7Ps%AStRwn0!r9A+U4~S*hDV`l6est2+ zWvv#>cGrfswE0F*Rr)fEUY%Lz-8xRvrJT7DDfA^=qhcSBFt~HhbPp<5iYFY=;i=XL zxL*E@3&)#ZGTd7~{A2{P$KW{edtMk!Iq;X{B{d$~2KtMZY*9N)BUyQA6LrTD_ZnL{ z)xSRBZ6#~(cT->P)Z&beXNw64X|%O-ZCJtcAs=Yo0>?P`qEilm%r(IMr&R$Rr2(uj zUB8e=NT@x#&a$a_iv4^9*EAv;J?t5gIl(uEs=(L|wCpVoP1pV|&gBELzBL!ULeyP! zGYg`I_}2hAUYh=!C%xD0;r$6%&J zy?BD7m2{^+0$MXK|3!Vq7xHC>&o6ma%VOA$on16}9j;0GXKK!T$B_vRt+5407VAtf z1C&A|qvB$-vvY7a6zUtuBPq3ptAVIB$}zoRQ|&~1u~3HpH{LASTwm`7DObIdCbi>| zO+P=-Rz1j%JZVfHf9#S#%%>AU{+k4OsZx6)FD!gANbn}NvjkFzTbM~X=80kT%ec~Y zC3(gtF%0dEG0n}WU}z3L|^X=ZMwrkhD%hpZPMl}WB!?<*{>rnYG3(xBYs@&JzJUXR)$4+q&`Lf2BT-;a2ezNO^VZP&}p;Z0|eUZ)C zXnpG0azy};KmzL=%P_HAUte`0+<;vV8mE^e(QW8WH9UB}nH4LB5#Pw7qS0L}A(&{} z39oO7$Vd{MoX~j;D_A2HM&6~VYCIZ$*z_}b^F#n~XJ#<9S*F2R=UM3|7Yt?_c3k8N z`qGt{GO{n?aE@Yd^>I9By}WEy)vE&0NlruU#bjyeO^hags}oW9Dlb3+;5-bO(8K{3 zd6W5PV|Y$)^(RJ<;ySuQj*IP8ujCh!8EE1XQ>zLFnI zv@9iD`Ep*1^GirbD~JxvPA10%6sLYXVMuSp)Ril5@MtV>lL}YEBCDm9;PT5%pcdm) z8jftMHbz=2ZX$0gev72*0*h}r<2AJ zU*i&ND*Q-Nu~Lutw!$i0drm~!akXbhDd%a`{Tv#BDNh&HIs06oCd!;h^mA7j3YM*0 zz>9Q@2rssbL`TOt?lFgcIDsChvzKyd{l?z{vb}BfxahF%gx=?L^|hAEl{9Va0hza{ z&U+fpj*CV9C7b4kU_}p_(pZ1xoB7;R%z*kjG_S3wk>>G~XVrbW*2$a!ErB;R4^zGi zU{SC?VfgSGYjLU~TunlR>mtfeyQp=TKe;Xa`JUd}w#2G*CP~*sc#!n@Q0nzSQ}ja$ za%FE%5pQ2JRY0`{CFSRy#6=b-e-#g}qj<%<#}LTW_iA~D!NoM6$sl~?`VPLE?fess zS*1Uc5_eYTfm-#aKi(8hy(|jc*KZspz*~23uLEN$fR!)}96@yLJA-jES0k*Mr zxa|o__ro_?8h3oi^Icl@k4SV;{AdiU&m9!|I`bwa?ZFN0?Fe=+%xC!d^Bob9>@Dk! zCNXa&av-hO<^+<7w(`NEeRYAi^C-I)i=xR+v|~Er?u3>@KMKuNIH2t=i_sXDrwcca zaXYkSvSw$4Vk>c3pyh4sbUlzD*=q%-!9s{$NcxDIRNS5wm;LnoWfe%pF@5@P1>^%22`x#p67Lrg3C$jx(_ZHjnc;r% zmq^4RjElt8(cJkyx_v1+%N|Nf*t-{8(?{$vv#s6o>T;zAE36G_;-95HMNcn<68ip? zB#2;wmX1o(=C-(a7lrTB7S_Ea(|Q;@rDvcd>vV!n2Vp&93h(Gz?}!uiOTV&n!7|%gB=$ z8^im^iy8#;(L}jofPECz`DG1yHG|hNf1?Oq&wDHIb1+-g& zaMHTCpf^sShZ|`dZejWVyTc%C(zb*QN#w<$7LPs4PmQ@$#N$q8JyH^ldZe4JfM+jC2HUj*ptSMi))ztM3TO;An?3Bdjjrx|Mf0v_ zJuMz{mKMBgXGmGZgk>Nr^?a)(1nfc$y;T&TW}fUfG)Y<8UlnD4YD9V3zsu_7fHM z@$~TDsoF8P`npdIBt&o5*i3T!!N~BJr8^q`Gdl8n@H>~pOQaVrSD{>b3{>I7?sMuq z&W&weyuIWPTU8z>Lo;rah=~OoL)rk7Ze{xy2LLy*yc3Z?oS4+;? zb<^r6;8$GhyLS_3r0D=k>8cCb!&0n=HaT4~IVddZcQlbyB`nvh%gXWGNgVDZN?{`bdNCUp(k6fu9G z0~k;t1^Z5P475EK3nIx>xgt&A53I6YPgV&ZV+%|aQ9t7CP2mqt7DIBAwJgqN%KWMQHp*1`YC@|?P-e>RAcxG6t>Iek4&LDHQ0 zm!-4I!2>ciz&$CgHw+*4OlnIv+|xq~<^~a(27=ywkqH>hJeI|?gz2uAhyCy0<2N3_ z+ok`hoBB-@P&r(V8{=8FU1jrZ_;~Ut-5A$)QJ86uCwmmtldADx$LOQ-4yVMNjgo*+ zN5TAjy*h#zr>sM6|%`v^g zv0>f#j&IX}wbqpztg&3Z;-bW?Stgw_#v>SL}$2AS6wE5K$@ay-Q|QQLVM7#XFId-5@=-kY2A0?C1zmcn$n z+DT0gweY&NGVl4u>zF#0IOicO4&W+r`J}Eu8SLfjqTc9_@9KX)$yJ@ ze82^)X8#-h|BJo142!bu+J^NKLS{SxT=Y(l|HxEYDJYDOKaQo)niud3CDeC;jVgkm;gTWR`$O}5WIWf zjTuiw%C|ezUq-+{4izqTDc`dzlKt>V+rm~nmnhNduY@bmf=RB77JWI~%qm>@ql%>dL6_D`rVaFYu=ZF`%l zlMgF%T!j^kXA(5kW6pmn)kNHUc<|uRm+}uw|Yne*i|-ouRCnm-q6 zK~#$&ZepvSUKmQnmyH@2E;n6wqiopY8o`ca+$d@G+#v$}x3sm@kLcKz5Js-r;=k?! z=4(=m)u(Iy?F2tIU-*L^j)sdI{x^*f{7=EeWG$B8j%-gh2G0aCER@WdCp@g2Wwts* z6q_S%lM{9zm#y4xp26g?ZIK@+QynxZ&zUOGVQxR_woHB{aUmF`raM$yu++=%{~d1TLCWs z{lr;W(O(=`*cs+_x>f(oJw1|X9#SYp6{9X2i87_JxjC!YNWC2S^w<{GOhwLnqNpux z*uDFizUP<`|L9mR%|OxERJ|!MH?TO)Qb9vTC6mjUb7`tpf)ZwUKmG2bvT{R<<4(yG z*j0wOBk_IYF86sF#!hU|fuUjLy~*EIsRi8Wdmbe;a8n$Vqr=+4-y1?+b+ee;^H**D zv?8B}XYaVxe{Uh zncnxQ=WHWqObW!fu=8y%MQcw>B`G2~RZ*FbwFS|&m2POq^L5OskOMLSXJG-h&w~@Z z97;HB*%cL@YdN^+omR`le4Rk`jJCME zgJoQ{R(+D4UM=!`7##sng=c(kxG0fBTWCj8M5{WrZvK$H`s)D(4({gMvZzE2#ohgr zqXRFEa))P^eZQFKY1THUC0@K(MmNJ$Q;MT~vfRRcz#q{VrBcqY849#Y*JjplGjh*c z(m{ogZQ*!WaBRHBE}tj+TgIHMij;xeP&r9{&-KrS4vy1;;oZj2x>F88_UZ;7W?BZh z4q6wox~t{+fZY@yFopqKoU8uld(s9aO;u$L%Fj4Q_vDRuFY%!Un#x+;j12J3HaPfu zMmD~@RP?7#Iy=gc3sd8@J@9GosPc1b3c(T;nRR9Bl%x)ngG+cmqn*((C5_P8^v;83EEt8r3G0FRFS02sDeiCzP8gXGQm$rDHnVqFs6VFS!b$%5O>kz)fK z0cV}rm6Ab>C$$?1L8Rs&%L~62pgT#t@$m*!)Oig@7eUg`*ib}1L&T0tHMGUUi?Tn% zY`K6Ix8ndDutv~mf17)?dwAt5rjU$$#Kp!poss$QKK>EN(O>|EXBu5L zJey3gW^lTwAPg$#9tS~>V`O2bpE(%}j~lc2EfI0{{3+<#^p9l#7AL>!ih)>-0p*x* z1~EL)BdHsjll7M0^4-nKU7_{)SoU&MSp<%~Lz%K89Mdv0lZIJ*bX*|*=bmxw1`QnH7~X}c-#iF3;-6B zG1Zt=aZCrU{WKCnVz3uWD*e>ZB@PzYW=HzoD}Rs`^~(q5_NOa>3jtpIxHILQM~R5D zvz?Y3K&`)up-x+@+~nrHm6Q&i)gcKZU)EMoy5&F&jQq^15D>_Bx1Ech8oTu|bm$6;T=nB(d-XCt!E`*YG4P22#UrkzkE#qb(L{vAOqBA;f^L5|rG8H! zlrvE9n)_LdBI5VG^B9P4OjN4lWuI@F1i`$|?BU6$pzx1~x@v4kE&TLPx3C6^vCMHM4 zK@;_UB&Fiwb}qaR?>79OWw3O|jPB;xO6w)lFMDStQF~rioN;N<)EK)2{Jd|JN~RsV zT3Nplniz47oU}-Q6u*JH>-P$fr`e7**IUEN|%k;|eZT8sP zXqu1dZ~O|s`s?`vZz?LYePQna>1=t}P`tcZO8xmVa2W~+!s6nhYV7YDMRb^SLNJ-u zJB}hY>OAj0;o#sz{=jBD3^>&OVZzmHj+S_AwU80{s5{ zv+Qehkx6EQxmvHCzS@(3Fw%0@NyI|xKE~sZ28d6qQ%A_hnCr%GuCBf!YTcNqHb2_R zhX)1*=EPOWOxiZfrP7rA(pNW`u`~Mp!DrHLn(Ir~y8*hJi(LW8bynT?4x|}EeTjvh zes^p46^*#Z(ZbC@5ea{_9kl$D(j0yM3GsE1^Y%vLPr7y8R-BPizT>ks}G zNv^){_gc;~3Wy+`;{J3v^jxRf5x%i*d@$R1f}EW^4Gwl8!w85VX8&}k`0epKiL_?K z6+7*3;qS3=F@%W;0}1Q~>gq1XHA)jzE)w$4726rGq>Tb|+9>x37lb$Z!Q}Qs*CleOP!;m3rH@gTHE|C83+d4+-l6S;8N03 zi8`8cNnF2Md+LgNVq#;N61f?M5G6$-^_lPidiwEd6b4~`NKkOYm-U$D5(RmexX@7R zPI;(!ICOEf^`_E5nBoB4Ox_=Yk;%TP&Q%5UdC6JubIed0iVDv=>(yq%xyxHJ`>WPk zL5Lk_sg#`)H_Jg6S+wiaVFJ!_Qr4ga;Xc9=UbOHUTV^mrp2JOl-M=(vOk_%@AMNyfpS2gNf*G##8dNYz|0Tb`qkE>up}nFjH{q+z zO7#7D!Q0-QoxA|g&}?>kvD}!npXPctYR+n6-`peW8M?H!oGlO5D8Q)-(sM2;sic)e zCen)VTVOd}f!q1DDWnHmK9~=@b!(A1J_DCtEpKh)@Xm#)mDvpH(O?ai6|NdPzyoZj zUaNfk1Tsw0dH-somib;-v&|wSJNplmP(k_xyNcAFb$FCEjD<0G0kiIvFar3*h{>Ce zf8QsaCD%BvZ)^-Ea0pS?x)b^R9QyHd2;0DJ@Jy#lC2za{e;3hsa+?@EXVxwX2@1M9 z-o6?=nY5LWlH#qe^Y=%&xp8+yd-4c*+a*S$qN2=EnSbwdbaD<5Q+|FYJlv8yl{Z5O zP(YiBw>A!Wk)14T38Ks?#&W-qfdH6nw8h@O_a$`3I0ExnA@NmxM+|GvrW^jYeqIZf)5 z+JJNTyt-?=8ywdl;9==aTm$b0KP7*`VA@_v5^5zamJ&4LjQsC}>tBULGx71#^YLyE z+$7f%kXBd^l4!YYI=jwZg~{UIc<5)ZW!w4cyFpHQ%9cY*Q}fbdOW^92bN8_`Mak>T}^EdIm^9e zVX;lTD~IkK9Ac($FpI>3D+tUZyq+8;vr2SDJpS6?abk(wj!j7|%+39Je_q)MI5~UM z8xutm{kLmtCcXH5&rdH#twzregV@g`(5~oiTjpnHxr)r*odDCNQ4tz+}t}=^4+x#}H>Kiu*54sN?4~8Ldj2SR*>yx_+jY|Zg6Z5i* z=DTE0run>WIbgyMiLd$qNc9WrmEIYhi~FCgM1pT4qRO5fcY+Lc1;&)` z&o!PJI|V?gtWIq#o_AZ^r?@>W>Ks8#D&~#Nautb=*VC#~JF zf&qPlodGJ=_DV{Z@Q9QbJX=Eg57J# znH0heEap1fFJeyb z(;GJzbB!+ycbjdo=I^-ax7gvH-qPsTFC@j$#$!1K3u}*EU{gZov`O+ZaatHRn&9-dM_b%_BE z%F^a7j7NIqfF>dh>!F)l?M}6|$I9CMY1mDn8+xAVHZaAuh?QrM)L#R=tfQfDaF|!#Lr)*Zc&nnhIq`gl5aYXVbnlf_b=Nmm`yQuf{theKCIem( zm#0U+n(L?PXF>^`FS=!1o70dI@^1@ro7|6N|B+i5Tq-SiJii5jlcm9uIz2NBKKM8m zesK4OR#a4!*v-OQyK^vXy`25()(fEH4}{}W7(K$3B407gSXksLz7^FJ)z!MH4r`*{ z4E+(os^(!%$CdCcIu~9I|r5eh+b=_9xn&Y&~Tr3(&J6oyDK=4&&>Q2;z;nio}k&sl?sRM6o^d2*(k zL?#zN#SDIvSFXS>MDybw_b<&*9ymIkRWDzr=M^))eto>FV85cY=r5~-10bqv|5-rn2spVdXfCO3stw1Y|8y2Rp;$3lq zE`whr=(Ih;zV!Hg5q;vWT@yeA?D>93XUoEdB&3w83R8-U@~lThs;TE|I~y3p_HGR`;I3MW6{#cS(2eB|#SZ zg%C13b|mIiZ*YAx3s#hGHJVbj$7hznm~`Nr7#bSx@!gtz3#X|~7Pwm|hb;d1tUNLj zEZxJt-j~c}g~_`Ua{o{kyDf1=0x)&<1wHJh>hxrEBxGg#I+{)*RW`onKU(AYgK^e4hdPF?DDtvz_+DuJtoY>$p&qyMnPnzUrzyp(K-;RDfa;%0h&PO*`vR{Bt=TT;e} z!%{_2(*Z>AmsudM=dLWh9?6d7coM=#XwJ~n%aQO6{)@RP=dlfkkQmJmkI;5n6Glz1 zFNh<4I*VzLg+PS@Y&Iq;iTd^HjFBN`*E1M{dAs-1)u^C$YLfu@`TG~i$|7dK3r73y zsnxhP)+0x23H6YWXX)+gk&zt8EiCNoWpTgmxnFiZ7lNGDO%|`hFF>RZaJZ{qg0$5? zGko?bNS!ZA2`*j}oke5AwGxS5zKkQ~zj#Z{RA1Qe`Yq#iN2BYR?BR0x)rj&7pi?M> zI|IIV5><^x-q)SyU^jO5FU;`JQJ;iK{LHC~sxtNJE&T!g(Xn70c_v7nkrZEEwW+AC zZ-0B6>9;EDKJMZL2jjEZwA7&(ek2bnqax#mCRJEU(kKLP-qKNrwB*VT_Id0ODQmWc z&r-upo6j&Tq_~TZd>g#;ET&OJHqFN`*7QKWukusSaNI{Zy*HfHCMR{3(K+(fJG*IF zeRm{=$T%BdiB`I&n|vv+9=`3YLC`??TzIH?>A3i`oAv6Qlkat_uLhIi%?s>)>Cb0Z zT%#*uGBaP;&YxZ!O<0Y_y?O!>KDTbQ$A#Y>T$rQ~`2{^aqU)B*F@>tCs`0LEZdbCh zS1&S8SE#__2Vwa5_)liy-1|tXL{$7-(Oz4`>cqnMvx zF4;Qs9nUzQd+!K3pG*r+8PqZ{fmwg5^s)CnlPU$;{*TLze%L(6$Q`pIsp1}=Uo|zg z{XAKV?%Ff;G#b<#M#UujNWd;BnEVcVsH>&5wRM;JDo|=PKeLDmsL#)DBw&0l3DL*r zoHq!{H=W@tSJ8DEh`U)XJITNZ8Cl6!)%q)D){`ZAXdmSj?!GeO_x8?1cNO-Xm~5a; zkI)cxG=~n%0&|E`w38_WO;GUNhQ?s3uY}tpRj2EGlaL01g@W9Cav?W$Ilasy|IsZc z13Q;h=b1iUfog}=)w~UPvccY7Bq6ckXOq2^?tMR2+`ICT!tXhzB~8eKg*wW)U*=IF zy&I!citU!;iw95GO2e9j6c(!@T zb&6fx7Lz<&N_S6MGawZc9ZM{nK>{PHQF_~!kgj(>13ByPa>f1F$i-&~m7V$iz4M6i z>l8dWOm(~`Sc*=I|6Ff;LRG8$D~5v7^Hc`Kc5l2lkNMhZvZ$%d?mSLs9XMY;TdR(o zr*3Puq3TXg&&h&k#{GzCnSYv9=)PgjHRS;<3R`gh4r1Zr`vP}f3R;iR2%MwaYLlt= z8=IFEU7J(`WEEU?6zX1%Z|)&fYZHvP%Mb{{C)t zRps;ZLT!TzOF?B!8?psqnyx%v&`Z*%Dw`S5fHR=f8zv6whP;jL<7a9Tabxb%y4skUN2OW|^`QbAhFg3TwY#BQ=?s($U?{W|}Tu{gxWBDvi29mFZ-z*Gp^g9m{%XcQub+*=;q8i`qMSsx~T=BG01Ad^L3%57hf4 z_C{h5KspsBW%tO*>+641VE|f3h)Z3g5OnTh(Ty$gMAZ!=z>^HGU&UbnT5M@hBLUbBl0UoUR4F^X)calxM%*jc)&%M&vCo`^Y_CF0( z5Xog3g;hBYqN+ac%|QR`yQVLvD+J!3aqRuYvX32p5q3MJQ?V_qaUkl9H{t=|17NQ6DHB z9MA#O{wJS0%oN429^rmF!o6x_Euxg?(@@bEtAyCE3L|<@IWnTCU;AkcV9_{ALDboJ z!Oz&@$ez2qR>nm|4UH<*e_hG0&GQDKXc)!nSzw^_kC>O-oY&`Anm`?mgQ7u)ni}U> zkISjyM>oRXOEn||?_S^`skd*pq5)#Z?}F@Yw9IJuzyy(zl2NnSQ`Bsm*4^$q$~?2f zF*{h4%pCp;>8Zu2uB4=7EL!75AORj&@!!M`rlO!ecG;Qko%IzY=*-@MG>OnK57diO zXIuIj5A?+S0f0tcjBpIwA-d_A*XH@^Y1jtm(nB1cmBVfX*S#4^-d=RfGF%AQ*`?GK zC95gi$rKo?r@DV#o!RLX%SKEtcy5Gu>m8!M?n4aQj=^ZtEua+3f07O|LI1i)s;0iWxHuZ! z%V&c=8OD+dAY!BPjRO(e&_77aE}0ZHbuIg$+ZKp%%W3Y-Txf1cuxJNorlz^4`0gZd zgrU<^|3IM+=2IA%=f2`4|HvuPX#Ck$D222#ovpSZzmRd$$}9an_atNB`Pk0jyOruD z0XmTW#G=@gB_B1<0JMbjyl19kS((|b<=-eWqmXv2(&HKrc7&^2g2%1-W2J5Kk$+u% z9@CHCaG3MrH0$}LJqSD}Le?R-wnS(#zgiWh{yIZQO@+ zkegH=ca}TH?uT{gFEx{wu|;JD)PP(UP1}P-=7tvZJo;V*^3ej*y1M+wIP{~meOVMHy*+Uum=XPhK4z; zhj+=7MQi%rMTHe{u}mSsQ?Nbyw`IZvO)giJ6RC}izFq_YV556JIRx2hre6pRHM#k&sa5{UY~~k+ z_gAahA9i&l7cYApO&{NDDTXKW$a$VrkVW6fLUvCUy}EY%PVIKysSfqt*VVMQH!$31 z?={yZvr{N($+ypR4P-#o+~sGk%ywA_l`VHwf2r){*Q7ape#&nhZP12ke)Lf_t7#+Y zpIy#MxZD3Aq0%dVU}L`UD#%kxipi+5qN*(;e=)AGkQDYPA=C!o_iF0u!GX6MC9}&J zc1KE2gSM*->QB;&TB^G%5l_uVUX*X+`ccS=S6w5>+r|71@1M`b-MOlXf7>UJ($!7* zkp5G%Fe>W%$1&-i9*~{LRL)xw$2ht;YjV9=U;KQAEDwXVQa8(^GcYl&1zD@fsToI5 zxS^u5J?k1)4HYV1A}iI4kCPr8vV==`DH1HxlOVeu=5e6K7?+&+ zBjn;&#AJ$HN;RY=_eo{4%5RF-4*}N@1(I6zK1q89WRJ;!eFrTlT({fOy*wHO=C+*p z!qf#5cO6jc1_;x?N0Yz^YfI!-@17`zPyfkNpP_ze0T#E|MmUzsIA)>@LSjTzh&fWdFBT>4&JmpoyCX12)-L#gLMP42ls!(A!xba|OVi*sX0HCB1p-;HC z%sce7+u#uhVrp7=Zf;C+GVY6)r;q;f1NhqNH;hTfj>l$qoOq~!MrE>=vb!6Ro<3lE zuZ7RU_S)wr`~5|TXtuJmlQS;vi`Q>jXDbgBA#$>ONtG78`s*g!q0R_%1P4 zyn_a8uUcMS)T=8L5e#y^l$*@)im|Z`g(-BqkuAIwQ8SHmzQ_9e``$wO0N9|(A)97s zu-Y-V*l81m)Y_l1)zU0nSjp&pbqE}7vk9AOk@0!OEFkQ7Gk*qv($kc&kJT4^eU)Dl ztcE>mWh~r+>}m+EMohlR*;4WkWfy1h4%u&RKi%OK>z3?3*3!0BVumWsYs?pUI9A2n zq-Y|Sc!;tK;4`}m<+=KFuiuT_BX%J0jhxsRJcOsmSt26SwWZ`RrU+|Je)oxCXo{qW6V@H@IonO_2-);BZAY&cKGBL-IL2Z~E9Lt_I zMfN@`&3viLwANL$Er_S4W`6`b;jY%!xxD=NhuEE%4aGl0y990n*s{s64Q%s^9Nq4n17G{s-HGQlB$G2ttWVmn_G zjtt6=F3;Vpmih#s;qC^l5(5Di7M9+D9)Khxx-$c&(IZ(jWo@~{ZJR3X1_u&0S@7`i z0DuOPw}}F_FL@jDLU*DK8o6wo&rW^*LS{CDIYzTzguko#`t;+q=A7$o`TP-jc{P7W?j}*;^#dM^qz4!jPTcQv>HuUwmLh@(90aq9pwdhZre5#-Ymf6)}g z1T=%Ooj;Ut*VeYM$cyj1;T@$J-a1VpFf2_7*%)xYxi$e)H%v`C7W5znwOyFU{VC<| z(;f=gtdr8mUau}8_ma7@sA$2T{QR-##tx4^Q;s{y=$!r^QBl{}i_H#4K2w|K zE-=6EeK1}o_Gm$|gpX-A?X0%T#!sIH{Yb-VX3-)o!_9t_^dEv>0d1Flv}sV4dN_0@d+|=>4;MOWQIc!OL zkJuPpFkzb`+Ls38&N&!wm@z-}`7bv!-Ll)6)jI6nyXen%;6_nC$q10Mb2yWK=3i#B zJ|K2uN}JV*CVDM5C6L0O92b0kPh+#*3}~*yiN5Q5wdY_833>X#~9 zw^*NyM#Dqmif&yu465yP>%B7FSvBqLgG4?CAetRRaQ7zcCT&My{9J{4c=*JvqbOE7 z^>_vMwB{0(2cIr^Uwif+Q|}UXM6Rrcz8wj84;gsfDC`f=^`fsA>*Mv@B{hho@=uZ3m2yR9TC+2elh;-|rdA~Usa_9J z>E{ZguV$VnSJ^ErZru%xBFS7+mohuUVXBQb_2I<}*G#iqg-GODIW5?jl(-fgGYLny z-7sgcyK;#CAkhEWU2js_MZgAJZLsc~E$dlHz=&-+2<%lTkh2VgP!A}uZ5YrjfW*f$0?j1$<5CJgE?w6v$+ zzI_XnVa35G9*?_>f@%s3VlE%?Oln%tEb1q>(kpu*wyM0Dzke7{PJc_u>?n`cimn!W z^;=g0s_#{65HA9tNDd`dDSJA0uM;)g37gbA0yF;i&eZ+oRwYb?O?`d8K8P#FNoPyT zNG4Zo@i-3MI^Ne8r)SYAT4dITAp~p!q>{r8IqdC|YSN33e3oQNY~0_ApAp7lT>Pkh zu0AU{2+{<}xE>0llN{LaAQ>4+67x!mEw1z9@3Zoz%!m>OzoB}>0|!nq%KdeUfb~YPf(~rlI)7!I>Y7;RG9fhu3QOIQID2 zGomdEw7dEFu2wWG68rt0u%<_k^YZgX%{hSOo-CffAQ!5-j(9$|Q+>KUdobqDFz<1$ zuB;9Q1Xfg4@;hv&B%&UChu&iS*DxPJ3u4%kTCjxR_7C-jLTpL``Z?sb-Rpq*yRcf=rc7uU$5LYO_v*Bi-k`=eA z0wI!BzxivE<#YzPR-1)8?%}=^K9|d`Z(ffcW6l3`z8Ne=_msFK13qMt$UP@QeLYa1 zWkKix%8T0T*?4b^YO2hCQ5VywgLL8jyj*ii@)hRI+q9PthA{H-tT4#AUJEky_aX&{ zcl(oWlN)QFn%OHUySYuD&_+xNBg5ppzj%Rsw0O2MU`C$!mi((@@IPO%=s76h8H&m2 zO8|P_e(N@I9Z{5HYKkI4x^Qt20*^pHJ^}6lVBE#`B}0>xLj*tKGV`$up-E#L5P=k<*LpdeY@$j4aN)j&QVlLHxP6l`n@-Oj2 z&dPU&=m`h9mPv(Yif>hRfM*1bA?Y)N=ziXCf%IdQonx6`U8VtWqoe-w`cT{JNefU2 z<{DGId)JQf;eXBvzOy>Y|LQ{tUip7d{QtWjRksZSk9~)&Z!!`!N)oNUH%?*{oIa}f zTfO>kn!nS&jDmgjuOm$ibg$J8*O@GyN=|0fdnYl3dob4^WT=Q38BxyA%GVN1*O?(? z#NU~YmS|?tyNGA;`OH5w) zCjYmMBvb6>VDW=r3hGMwO*W(M8MT%);|$F7+H4S)!+`hl(qdv_N=l!tole6F;vvaw zHh}dadNL~OUXrM>g=YS+$o8S!1CgbiKV8xO9PiP;KcK82{WkzG{OtBJ&UUsz=<;Kl zkI!;Ly9`;1Zj73$bZ|&?^b7E1yl*-x9pUo1R_5Wv{Hf-0jTcs7)dmGshgL0{|7=)r z&daqwjenna4fMDlojw)8h8)b>S(tpJ>FMt6?e0x>;`qY>@w)8-Oi+nXa+z$yal?OI z%fJ5ldmR(DUQHU$l2XpiUHfHytk+E8`{~}2q1oB&=4Zg(0X?>>xw*BP*IiR@;o)Re z+}zWroy5m$mAwRe{c<2(Mv9AEi$KI*?CdWa8wq9E4MJS+)PBGQy$k^fxJqsZOg-K* zpU;EK#JjQQ2)TWQwHqF(NC7hDJ+jGK(e9ka#THuBiAm!0Nz}1$Z zP{D9Y=dAE-)gk)>OB-jTM#}lDCI|%4Tzp>9t1%p0BBdUA^=a4Y0*%^G-_ zRL|+jkv^N9i=9R%c$3U}fA}@&(#~GHo}&;+7keGC7WZ*@ilCbSH@8`5To}@$rfx<@ zj+lLUJjBfS`;Dt@7zOXx^hAao_l8aK1OYz&v1-Ji%oAh<*LwV`|7?f%?4Z1fNe*=E z1eOc%icr9mAX7^VD|9D!Kn~7Zk>G_L!~ZvTvc0YSsZU@?P^yrH=Vy_JiRu3rsdJmf z^L`)tCwi6#q|Fy#r;MM#H%jI~Hek7#SZ*q#?yE;#iGEd0R+gV;|iR% zl;*EmzFq@nMukl+?#G*-DHI}Feg4wo z<&}3AbGw?IWGP_7z^M=u7~|x4>XSCQbpYs(I|Dil)FvjdMFoK%to?-rP|4%l^2%U+ zZ7ph&nAddf;Qpp6k_6UoCyRBGdE~l88(s~_WcA)_FN7bxA7bG956cvblx9h4UK>eGJvUv>LqYRO8Wu9c?a4Bc;AIet*Asrcg25BrvyL1P=dU? zUA|jsC8kk2tfwR1?Pz!F57W`F@;_WkGw*1Qs-wOB?tvsWTUATxXIE^mZ%32XWbURt zUcG&{*qW$faAJ(8brWQ!S)ZClPrW#s+zzxsfKA^~(KYH&a5n^?HpkB%=9 z@VcPjr37TWp)G(Jjwp}(A*x+>AhYWSTeBHJ`2Cfa@~g1j&))6|X_g#=M-w?kLc)*!MibU> za@f=6?CuM2RR4#(xOx=u03u%(5s${7w%IXYprTi_?wB$b46COZ8cYEe3FwfbYa^tU zLNnY>&~(rMppq2x&93(YOn05iNK4F>4uRM(M)q5ysXIY_kg>WK@jVdm-rpyvxHx1* z70Z5ucK&Rp_+V_IAf7ocKK{PZ?4IP{?_{i0ZS83Qd>8H9*EsF(juDj~2)SL&jN0wD zwxfukcs;o!#Q%^=Jw)y2q3wT1{htz8P_q5%{nQAcbUugd4~>n0L1KHKs17BjP(*fT zAm)JN1Q*A*zl7tu? zIeU;WLP2>DQz|K0T<_Md>eh{RM!b;AS`V{YRhdp;V@VMN%}k-Xy4-hH@o`n*AQ%Hw zO2E=G=g?-iV2ReMHM&>;YyoL0sjclTChZpebq*F5*IhrvIOALO^q{MVRGEc$ket4YB-aJD}wFsKi-=M z0t9T7Qn&dTcm(;Xu~~Ew&;cjUpTbzp^aZI)W^dtkl9vr)GHxTY+a%a1O6uD5ikwM5 z#VTJR^EO93#{r=_Lc zQc_1prI9#GtGdr=Lg@ar4xF(s3E=Q-pw0}HptJVWZS5c}$T_uf#?8eW)VP!w8ALbC z1EOL;IPL!?jky%$LfIIE}!e?gH}8e+*`_bLx{oI z--6uS8>dHaK2!eT3lres^-C%+Fc_hs^J{4yr!Z4e4lfM7<=}ZsDKya25qJN;1V+dA z(fdtc8l4(lcXD7QgNMULPko*oo`7Q7-HGyefH!#RTHDH3Wki)#n~h&*sO>}^N8HF?O1*2nq|Amkph?(;$OdVx*ExQYmDEp6A`&k+_gBSvUTn){*Ur zN(NCCb7PN6=ljtwp#SCZdpS8Mzn-jY=&L6Vv|`^_D92cmI__Wmp%4G-FvkS##Vn|( zsYx8`YHD~Cp82PJ5%Q*f(%N1$yYRa+oP0`Q|LP@@n*Lg5>}r&@$lBU<_gX_qsy4ON zpz*8A`lXV$i-qOSKR!xQa7YL-V^tu7LXp?PCnFFD1M1?m{SynKjNxl6(&O{--i-)~ z$fI<)TCdDG36E$EK4)%GlZcL&FXeBEk*!l;4|eCzszK$`Zx7e+7!*?SYkx}SF0a1{ zahH{@nV9^=X;4GHE-|{`593+brg-qdV0fV=Qals&`l?K`Fe4)a@Plrc!@+|ImvaD+ zJ$;7p=LT1!c`zq|syM$_m!z~|4OX{UFWgZ5weu;d`}c!CJR}cuKb)(faijNVh-UvN zpP&D2?&V9oAexb`^C+kRZmjl3N1c!UhZ+Npu&e)NDm;Oy&>p*OE6>Ujt;wk4;d8Zj zl9!V@cYqvh?BFi$fH?bx@)rb<4m~g@Y7HhqAmD0?kjC~)Y48MfXnJ~r^ISF`}_u%^t{_4IV3qM@2*!H3)0 zZao{QsHp1BH>atXh1IE>4*wQVY4Q)jZ|`l}lzk&yE7&P&iE zV5=_*`AcIJu1jWN)sNBs9@2=3iYhBBJv%!O4iA=X{*dODcLgXi=;`fk{ovDmCdn%; zE!`w4_5vlnIBz;(oqOqvg=NN})bac%7vyim3KezCS*CYxV73@u`oAg^oM%lm!+9w~H_n9sG6eekE4_agM z($aFX3R9w?NLG%q={;eq-{Rt;o^S&SL}sJ#-HQ+ZTb6Beh3o%1obT@LE*HMTyl*r1 zo^@p4XXu@cZhV*ao{fEkUnc>CJ9zkI7bUNi@>FRFG#pwbKxE|L=RJ*&K?`(%F>;aiR_f=wGiww|bfi%&e#UY1#2BxWn`qKA5nm|_ke zKoOa1aPhyH!2aJ!z5@5kZQ;Pi)Kvg_>o!_%{@NX0o6a^Fk z0cq)yk_JJL2I&UrlI|Lmlt#K+I;0yEsUe2$lJ4%Dy9dAZyYISp-GA?T-?L`1hBI^K z?6dRP&+~acpHz}xV9ve#oecIcY_s$oy&g_GXs#@rw#SAxVDJLp6^bW^{UwS_9YYeg zyp~p0YO1kT#nub{9!q`ngF#n8<&3x>c0Obz^y}i)&GmN}-Z6D`DWNfu<>me+BA&$M z<@VsEo8B~4?GmS9C)=lVz%T7xXXbg`4Z3k}+0(V910w+VCey=|qTi~u&>-`ueGPTT zDUz(R;03q#Sbpi)6BzJtXSVSy3F7XSeGD0u7^+|UpOp{qf{xJEDvMJxUi!lF z@*$8amuM2PYFC>o47{xBljAWU0W*mo00aMr2iX0?9=`OBAro_v>$`Z|X(R9s2P zabF?VhfuJEcygD?Z78-jPnp(Mf|fwD;SK*R*suV*Q~%H>gNfe8#@^OpLrqn+#%*q@ zXJh34=^6Io3d{2#5F&T2vXsW<=VBulR#Y@UHFofM;2Hb>78)DXKbN$@VS>cZb`UOS zpLiF&W5Km_Lqj6G)RrxlQrF~dNPPnbXa}W{*NGqSRjLo2mAY_Ajb;W{YgA7vBY0EQL#q{z5khV{_nv*5P`$SWA<1s@0L8~ z>EGGgSm3TWsnbedmclvz&wk$4OQuw9luAeRwu8|h~lUy8Jmp9#cjM8J{L@u z+k^C85&E>9Pg$s$ zzMeWyIKH}k@ubo4?5P9CT*n?5C+Axe=I6HUz7_e+f^VJFOwG-zzy<5n!SJ^A)phf! zJmo7?xG-r^gFwyAjm3_f2a{`y-dco(ic`7D<*AznLC-2oj zX~z~1by~1R+QnE6kY>;<*5DDr@D84?dXoweQrzst5y3QWu6w71Dyx|S zK2|`#T4^@AjhQVO6Jf;oPC15}#jwI8-{b6Zym~Aa_%lI&B5b$_xiEj~BR*ZXv9p-j z0s^s`4X;~zzt8m&a94i3d_l-S@vaLBBf)e%+@752Tb&;t#Y>-RX3oOV5gDV3{=ZwVgX_kLLi zLwokn2RH~n>QcVX2dw>Q-~s)zMzk#DylK>_Hall?2F~Lc;UX z(prbFs(JV3cc12jd-6PymBkfSH2)=y&FlNz-r_^e1ragedjw37l%edr0jW0h*0XNs zndMaQ);QkdJ8iie_-y7sQih>m!*`0chA^WPgxd_iBMQ??YAaP zR@K^X?Dc9L4`dZi{f~@%_+~A*+KusQ)NL~S^}hE*F17bx^IJLFebvJ~-XI&ch$Lxp z7ZTGJjyMJrxCE)zDJyKM7plGe^gfkOr$j}d*OH%iPuUs*tABgKIvK~R$o5x(_$3y( z%wZ*SA^XwpWZ#iV5QPK>tH>jl)*61pA*=^vD5T9BOBrOh86h)y=P&ummPU#cThERP z-;pKmDBmy`Um~gKKKpYaQhWwVG0qt-^&)K5VqsbB2#+Bm|jt_KXxuy$Uy?vt{`=ZJLB`l$+ih+$hKWRSKYSu=qJK;9V$G0;(q)A6xPk z9dID;F9X=pD_UCl^yZ04$YeVgFT?)Ta0cK7C%;z%(pI_Ju#=Fbf5YBj2+3M3UzoKw z-K}29B3ERld1-)EKH*r7&jD*m%T66%SJjP#7Cdr4c(vNPby(d2#6GB`zfv~L@%Z! zF}#IOeo{y`q$Hiz5z|Vk))i(Z3Tk|@)rP&|J{eZZ!N}bS z*NlYM@v$g#h9;7{udIExVxWCxYyI&HI_0-l++>^68Q&d4Yahi8d2GX}p3RtRcLqF^ zro&Hofh*pa8584v?0!Jr=iYf-X5O>qvmH^(!?&Nkvc-}Z)4ksbZUtVUJ1O1c9`a)O zj~$mm#e$#f2$2d6{HSNx1qZ}$0RM)2BPys?+`m8(M94m8G@4!$``T<91aCbYZlq5e znXEUD7RN#c(%n3XJ+)^ZL!6c0$tuoHY0akFBC9Lkvo}wMi3g)KRoG%ta&`1=4G4BD zyPqV+W-1itb~z8Q%$q&fQDlBz%&?hqeBwNJp2+}+(Dm)!Ye|`1`o1-F*&1Bn)1Ij( z=4YuWr<%QLgZ>O0!$jsB&?V()*A16Tr1nKT-)`XiRV6~T4spD(C8nn3H|?>IWwMqQ zm$fhiYA7eig|lqA8ztl!O{YyOF!=KPXYu<<#3%+^m4on_>T9izfk8$tt`m}3cgH1^ zz*bTe(%02o7TLp%8Ikp*QX0);X?_d4x%wY^;d^ZRntWx$G>1JIvBZq~V|_65>#r9c zQxD?LM>!QW?=bgYP3#q9j;ST^SX}+IcYM1{P}}Z*3=}j_Mk&dZx6~lpk5`t!)Bv;~ zNR@9LxjMy3ZZcVyC|!i4>&{R3E{`;b3}NOCz1}RpoJtrTb$eGl&F#{YTq}-{d;6q) z`yXD%K1uuU_DPPb$<9@u(^;94tAMIW;?-=q^2%{IBVe(mf;%o+r^Mw?#7_>kkVlnI z1ZijzNOy@z5wq`Rh>3=e!>%nSK$QUY+Qb*Q1A6=O^fDQsRCpX7yk`t4sgDL+>!9}SC$0f^%R#Y9ajS*&r{A|wl_=t=IR zcpi)KzAKs#e%+FHVkJ%Lqjtq4>ntYQBkv-kots)jPhYIBKU?v09}zc9jr;Wv^Jbr0 z?m8Y|n$0e#enrtiOVPp2&_c<}5Pq-?Sd77Q;Hz*gX1?s}>gs5bz&F$8;ANQ$35H~f9sU#J$+rg+ltOO-op9!Es`oBB_1CmLqC0?88ER*f zN6!AxCw;U(>*sAm*?%klE1Jpb_;jH350O6RUD?>AIa_#h9j%Be9ffP{OoZ9}XtWAx zmj!|4HBNhHSuLfG4df|Htd*71sXC0^#q$oux(-FLvu-8Kz*ah12I9~qg(2serOg>- zB?XlO4Qftd7*ntrfo%G_mXH*_+-%y|sHkGb?UP2=#)6#MyeUAGBoj~_DcSQN5R?mP zcjIQnBiHFKf9zujQl_!;lM>m z=8U%F6@{D3Kh03uu_j=lTwO{+DUO+Py~Rw^xwCckt6BmbEX!aB(4`2bi9@NeS5|;` zGAs&qU;#0taVDmw)IOMkKT{zSr!-C(T3Fj7NId(>9FTWEI%(3byr)al*<+J?UdbfuE$?xWw$SWKXu+@)jjW&*byn5(c?GvEC|Po6HVKNXbEBEp3p8= zNLeAgSAc%(pRl=c2%Re$89MWP2JFgG?c*02RapVhv*m<#TZ3(xpEic=RBq{uz)%`Iv(azxk@?Y$ zch(eT2GOOA1A-T@PAv)m$)}~BgMkH7T5$&XL|4~%RS z_2pDe#Iy|@{C)z(#F#xA7qYp-pNAtEht(;WX`Ak`i9PdlP3%UhY>#x;mRAk#8#T6E zAwX_{+Tg=dj-GzrP-O*ZStzU1E5^eF^xQ{ z!Np;>mh$Z3@XB>7AU5wP>y!w@FAysvcT6c)`SK1i1b>A3{Y$O7piLjuc%@EMx#R z!Q!Be=6*$dI^0kmy9+F9pi%MK&;ji&<(hr@*;jXF)8Qf!k!wKf4=pHA80sTA;j??r zC8nkYJs4R#tnPjGP*`~MNBsuzg#hMp&uTP!j}C7%mH&FmAB<9mM#{jPN4TZOYN60!^WM*7`khG$ zqv)4)8^;+dz-!1~qAQca!|8s`Du6+gmxqk@0;4wZcWUa^WK~2v4x{E%;J_~TcHEia zb-v`_MCVsmpRPyI^12=k3=Uq* zjON*YV1<-lp88%!-oGB``-^fL6tFK3U|AmL|DoD+30OGV7!?Us@RNSv+0oe<9v1cn z&dLd}TiaWcfjErV&z{-s^e>EV&0!BBc65Io#<&>7-fEACcpXkxOIG7+>pf0FcvgpU z2TPZ_y1F`Fz9jG0lwzQz-PoP`MW3ptF8TKFD}jAr@CIOt$WSG^XqAf}y1O_yymtOz zU{0^AevUe7fscnDL7htt1%RBBeXHKi?y&Ia*BknLz#$I&FH`msKmo*c zzdAI=$nae)@EE3jh5pw0b#X`}n)V)VaB+Wszs_-|wythP--woqN@a2^=sA<1mR94k zuMZ3cb2vVZVbJP^Li_vro^v|@7AIrPgd%`>ooTS8++1h}01KcXd`!S~xII1D-0XQV zV8@ljliF{5q`bdAoL^-*O^TvBwmYX;=g?q(U}z;OYAyS} zMvL3q+QdagW7SoH@VS-5RO9NxR##Uit1Li5qJn|~cz?Jt+m!VARzIDyi%X;188ZoA zV|6u1dz0BVmU|M2JU#bqY?qdn%(ph*g}i_^6lSI3_wUL3-N%=Ucw>*9!)~f5laGpu zO2q5(?DtMea)!CH#w2PCigWX+X6hRRYqm?4fDFZ@Yo5druCUhb|UgZ}Y{H5&G7Dj!#OrL2^d(_%J=)%dy$f1nxJ_S64(Zgg_F4sdzwE zGr%nuuws6L>($ZvJ_w|j9I>?nvVKM!ZsHEiK z{(fG8KKm;srmwIMK**DCpLc2+oq$VdS-*;kpZ~`!cr{rzLFBU}NlNU7b{+PXDfW;ECA6V%yB=7(OULdU##c0FAe zs-pwnoT8?u*EEX)oGfUB93ON{#8~-PV9D->t4~${r@ye8sVQ)sRaKp&Ojep08?(+; z09QZ!>SR_Xh0j{f#@4nW?{I6fOhqeYa1FFfs}}sKW06y&W}vj z*ZH&1Jm(*jP#DPa6!w-_an%j@*(^CG^gd<+(Wwc0Azn~Sg+@~uGzr?5+Xdc23zw%rI7rofY zo~{Sg&So1-#^q=}uCU<>pl7t5&$sz)JdH+%Ix9A&t~@&yVh9@>N#+(0e-1@Pve8BZ z)G|k%J+J%Px_Ziw_Tm}FEBD~)>K2gg1fUP1$u?HA$<3ag0Pdn$ckpAH|8z|~^jlLg zptuHU0D&lQ>|P870fAd!EB!Slq3&eX19+^ePEVbrKS>D+Hcw2{jxaCG&!Z9Xf#JUe zU1%@XZg^T-c~=0CGg*;hzsQzO;(}~Gm+`T+vEe8QJ3Kth5D6VAkh6M!L}0=Pe2X2X z`8hcsXG<0?eNa6tCbKlyco7r+oENf`6Fqidh2t#Ww$t+}N||Jh2Agk&E*csyC}2pU>NbT7Qd6ODfEe+-~|hym0wCZwoH4+KO>_(CK>wDbcrE#RwECh$PT zaB+2cPxXuvhh6$%l=$@S3Yru>JudDz+Ph&hzt_NJD&HzBtob6zahrFnzgq*ex~j0j zlx4(7!K^4o%ide$j*lSPwu$xLsK?x_Pa5b{1I!2b{2U!m5X1Xol0Dc2ET8-FY-Z9a zoMrCqA!r0#Vg7r2dn6hxmmH5CJvt`hu-ZJ`YYoH+^!FcD``wekj{E4o00saUY_Nai zaNVA2ay@a_o{DojfhBR%VVm_#R45l|Day%_VrKWoS}&~+-_J%52RC-unsGm#s`-2e zIh-1VQ~|&~f>MUheYty?UL7c6cO1sXKHvYn7C{NpjKJQ!(H)(T%kHwp9~wc)UVXR} zdNO}zyZ>P*NA~>uoE5JS%-nz*h79N_W8R~;`q}Jrfvylr>PhTyc{Cc8uM9QdETd^`SnUVa&(_8{6sG zrfj*~5NT=sfZ}4t6^*9ib^>k(h4%^t6>itPSh~g!_6iU-`Jbbl2Ei{0Xl(8ZoL)FZ zFai)rgiYK33IbVad3}DKmuKp!wY{|wb5|hf1$T(}RWH^0a8*-mwUeNmhOXdk0Swdi z&0+ZKV)cu|{yWn3I)G9Kj7Pu$WhUvm(vx7MV*(N;a*K&l(z5*bZ$B!SIe>8`-%%`WXS9<$~BWGo0$!AN0jA=j>ur=Dm@AyE_ z$?jyiiTkzfHCeWzb@o(~vtl1J4xNS*=pVpz0sN4!Iit!-4FLCiza2*zXGM91^7VCH za&mHJroISE*>Jvc1bZMiR@RK8u4jeB3-K@=C=k zIB?7p`{Z$i{@BcHqeQPAMDxTYBti+eN5;m+#>btZ1K;$WdWVOjy0I}aBckHO2rm@r zExMC)HIClqGPotvuJ%3MR{a|R4UB5V@5nk`bDIN4GldC|Mm_+BHt=ZNSwZBPfNT_y z32<6HHkJ4hWcXV4<{b&=kB}|(_5GeMFBTwgZ3RS>cLfSmSeuG?0CPpHiwg*isgxK) zhE~4V=PN(G+h634EP?~5e$Qj$?Md+j05ey)o(N0=7Z>;K+qcY#(O;8c5pjZP&+%}F zwLiGHa2XZNz&x&V*<@^NY&4q@+5B z2MQ|`xnfcv=Dm39#OobKOPdsYoU7b?va+_ec9E4&TYL8U&i$6wRs$vB3jknlXmIC^ z!C2L}_KUXa{o6eW9F+N7uhcQLo4cB%1B;DbMLVOTgSzNxnZ&g-%`)far-?wP+(mR9_ApPA)!=k zDH#W*GIq-uxAR31Tej|Tbhc2E3Yw^d6ks7RBh)0JoMsI+Vd{flnLZ|00f>*YORTL6 z&|phZw$vxMJNzN3Nn45|LsL#L{W_7Ms0i4#`a72E3xgg%kYFxpN=izJXCc9y%6)0% zEoBHl=bxi*0svoZM8(8Z$H&fHT!lr1voc=-woY}|<7;OSy4T`!1-aI<-^{9zJhTm61E)V&;zjJD@jr&{|t*~rJct{PH`Wj+WiM2Y2ruX&r6^fWw{SuXt+(GUm_%$qyc;SuD zy?a1$ZE+E!r@IvuhmhArh!B|XcAI1U9b+6|6EibiSMknz)sE|=OHGfzBK)#o>35KUO95zd7Nw}^=nD9=%gPRx zBw|$Pl)%!VWl;nlWfM$FOv0~!$iMQCtK8dZ1=+F>qH(x4y)g3zx;3*)Q0LDErsvhOOAa^DGH+MfK7#y-0k`@4&Jo}79nK9 z?d>QHd2|*Q7P97F&;_uO8RF?5^lE5f$W2e59~|vwYwteEzrzmOc1eU+kK!zq!KCCO z;>#;4pm%J(%7xqkdx*=G6wochWW{Wjb=&g{L{;fVypYkK=DjA00tllby(Srp$H`sr zzJHL|NJ!Un8N=AE;}tY-R=2lT7Rbrz&2>Ak7ZH?!66%x`=UpIe1j@#Lk3M?;h|CFl z6rza+14~#Uk3+1{T+e^=(*cqCAC!x=j9|K4t~5i@;!w(c<>Z2Pe@x2Dt1DU>8bAzq zvN_YE8a&uMQ2Oo;USj~T0C01NQRc6&E_ze=85tO0ot?FIYXf6UdTk-NEbbGm0yya( zdGd>O!hzMS$>Grmu+`tc@BX~HVAQTBj*sy4ye(Z&73g(`((sr6gw1VbFi9qs!BV)D zRaC&P%x+_Z{^VrG47-b9JUB3rmVtqS63SUuZFLNttgtl#rn{=@czY-je4@mwz!!wM z^J!g!_NuMsnn85}UPQS(X}VLqwDQG?l~9@6!)ZmnyBR;ZP^a;a$|@?z(fQoZ?T$Cc zH#au{!po>P+1bhI^x}eu(=C=IKa?0nnf+LX(36XW4K|h!2a_N6zuj~f9V8A@ zxtLD?sN}tS=OCdP;DV%8ni~Uu0bj>#BZQiPL1!|qVLRsym_NUK5j8OQmQq}$UPU-W z1JEb{L@8z}zJG};kIkSyUJ~I9I4c0FaUFaHrq2vA4+OUvjm?dSK;pFBH6X-|0TAZ* zIYS*^cBefojXb7y7U^hcE>Y;{=%&tk`GE{+Ru;kC6gpu%CL4WYW2(T`^ue`1Tcf)t zb$9NgMdmoNRQ~a>C^H5)t;t1vv>5?A_H3EtXNrY1XQ>bS>8PowL?t95Xys;Vooz=p z#}ytff$h^ylkb&yQ=8J!(NSwl3r*g!zg@AMObMv6n^-!6o?v$l?5;webJ_rF4=it> zZNG$sP^>8JOBTPp*|x8*ud|`j0Yk*;HY+?GrX14ta` z?CmP6tWYmG_gM4?Y2#7K?@=C{zj9q~DMG6RsYXW9$r#s6k^tqi6wmK%k(HK~mRQdt zlMXhhp7&6_83sE#j3*A)DvDHAfB$~=8As&_`z9b)Em#X(H4xquRZ#?8`eqcz5QR)KUCP4VR_P zsC~9%=6wf7^-4+AxU0uV;UK>`DT!c(yhffl1t;&{zVC*<2eI_pNi>JuLrg@UtUz+~ zH)|XFI-5NW#ZO@kw@9ExWp_9~LsiEfqp)Ar=z(;hlwZGETZ}o!hf9J1%A}H=wbtpl z9C(tH3=xACQg`f*{0L;pyfE^416T~pVv19^?VEesY3bP%!Sl8JOLe2Fb1HW0c4KLZgqEc?iZMImR42*zkFF; zUk6^13fEA=VAaPJOx-;_Rpzr0us;Wm0MMyG?*#jRJIH8>{Fa3MiHBRGGD_0h{lEMk zJa_<{#S#)-P-w1W3SU<=Lk|oFK$MSAP^_#zAm{l#A^`aE%hUdh%*>Z~!6R8x3CRsE z_Ul8?!3YAUWnhsv+Zy$Pb(c8~bO=S5mJ47L!e=+%-`%xxbPNp*Wu&2t{2Il^^m==; zm`H{yU^lt(BX9Uu6A1JjuzE9>gwWE2>*(9QYv&N%e-)y0>6BcF~^{$4pwvFwwp zs}EXQg$~{_(pvLZ@^1blPhcubF#3!bO?}UY^JjjZ7;=yW+Flx8RK>9a@JWOF!7^}X z-W33DQbPDnX-UsWv5FB9Q3`LJV}xtq_C$lagv3UBA|mIPIOp1IEHEd6R3<0&&ONNZ z{o@2G^a9=YE50Au9_-+yxUMNBq^?zE9DpBE|PGF3r+IVQhRE3Bsw(d z=d%U{>UZ{fwq0|BhaWZW(r5qVvELGieY%X}wxThS{bQj1;{#4%^FY{0hGAYMypp)- zByJiKgZA_;)AiUwCVDbaibj`209Hh}$>g`XUqed+;-+ULBP9S>Do*x{G`<&+KNcKLSo;BqVQE z%WVy=Bv{fwu?L*UiUHABpZeT-cMdq4Vh&2{bBK@h-mJHOY7TmK;UCE1&mI%n6LKZl zSU}euc;bq)a{@D2HrH)zmV|mJ(pgOsYK#-{1Z^+1z7z)xNI} z0gAQVt1^q$CJ^bCU zEx^hMQg1IHtAxj`ZcS47So?wwMU8zH^#XO^DRd!xs^B|v40A^FyRAC0G?ecfh)Ma) zhBrUZgM1^p{}6s=Smc$F5ggou&T-SqZ#be313sCFJn-yeE=zK|-ntY?p-giAHvaX> zF9*K#wv`iCzw$%`{xZXh!S*`VoziK)hTWwSi2FDtpC(AIWWV4mR+KLoMcpZLMZuO( zk}?~c#W9?HKv=z&lUYw%R=VFaV^6Jf&2v_^z~`u0Z31iPlZDTuiitkC`xW;p*YNdc zE}b8384b!?qz98haSgkwtelg*8;8;^s{WDbov~hyEBqme&Sa@c655``rMjd8WN)1r zgaBNj0e)Pd{`pST3!?HRr$6l*z%1`VH_LPa8LK8kH&7UYVi=yUgt>^^xEQ|c+$TXo zLV=ETQ00_I{`>$kglcPQjIb58s^;%O_l7bg95VZl@h+Xj&11J zC`4j=K%D)EQF=mNNB_!xdY6QPe9(PwgauPmmCo?AECE(Fx-XB$?`*o{xQ5}}XSO5_ zx;)_ep zL8K^xtv{;0CV!x_%al$gKP}ez2wlNKJhU1;kR44Wx80Z+E;Lh~kJ(2Zb_QM{{v{1W z$3~hH?V!%VkIVKzqn4C`R9lB+*2{6nG`^cgHj5j#23_>5L;n@XlDvBUy~&X~`6+XH z^C=zZ*lhh05(E6m5!rxNUygf)@7cqsR$U6e)9*2a-`;ar=2oyTypW*H4M&c`T3YFIsoYPGgpT7qMA=)dPCKoO0D zJp{IqI)o`pyK#OZCIV>A#NSj1*2(<8473<5bqI6NHd@>geHsxy_d;H{5%T16l1^{Y51%OM+XV;L_C>|AOzSck>crGg((+&+U~E?U|K9-Zh@g_DYs)q*=bpB1gEqxI*K8k;94dxxvD1C4!9)^|boqo825T-%Dx~m}dO6tTx1atw=fKqGT=oPH1>O ze_zdI0gXRXOliweh3#8u9(MgL!6)&tsaTlR7M@iEh^i6&NALB`M*2`zgIvP#YdyoV z*r?B=GET{t2_H%t>pjwqHu7{o2&M&mkBtH|Y0y5itn~v=Vp8pC*IGSl0Sq+xn8}cY zb{WpwOLG`lG4IVS-xyupyXrS%>XfjIvRASx&b7w0u^J*+x47ebZBC)` zv|!Qc@WSyZmP9+wrJ@fx0MO*VEUTuGm{gQH94+a8 z;*s)VU0qAzx8vG}f)feml5j0qxV;&+D28|MS%ba-SR*E4rEff40yi@TqTop74=0wB z=zXQp8f{;bckeVG&P-WCb2n7ngS%^BnlVqXqEns{oh=J2CRnoUx)hyCh|BtbBGxNO zwek8Hv_sJ9A@#((Ya^X|iFSEkM61X>Ok-89Vx`}2eRv1U3_5ng=5475b3!e{l>UU# zPs}mois0=AeK&=jCLW%9QZ<)xpLXqeE8B@_1*(j zXHVio+c%V39ea zB}ZePU%0A?3nG(I{ofEz0<quP^6^GJM|2+J;V>TB=a%rT+ zW2PdniNlVt9Mm5DGxZ^z_NOn%;S}&a$9UmWgg|I~B0^_D@d)d{L;$Hf7Jvvhk-74< ztny!ux=Ms9H^CEU!Fx#q@mSbVTJ?MTwsxgK<(WxQI!)V^tP@o-qEEwFQtA&cZo~m{ zsGyD|Y}?x(1-{9hL9Kx9GLXIkQ4NAx5?Zo~tI*uwg7xiRRmQAeEnv|&mi1siyhx0L zABYw=eukcMCgdhYLtFe_S#fpUc>9A}@G|z#C&^A%jUOVDL-1*vc1nY22Zhv%i%54-kCujuVIS{)sD&uKvXzfu1rW+Sn~0a z@3A8gY9V3S;dS7qCkwS@#H&|Qd$+w10|BJaOIVNCu$-0sq(c;O<1Y~{hjc0Q@8nL~ ztjiRd=>9w-{r%VuU|uKWJ4h`J7c-RZ>Zm#BVBvagFp_y4 znfKzcp|K75x22ULK1OQ#Y&mM6Lka{^TtlX4=;m7}at^ zF=#JA@$6uvI^Mr{h8c6-^i8iuFYze9K%bDqnV&Q2N_b`e#W_$hH89A8X}Ze3R}lnp zZo?TLe8%D7XOruBn0Na>xZ};H-v=@XL|j*&T6Le?7070}?U}(`cHp7?D$fvhzc?x~ zyyl`~E8yYzXpAb5{$-$}*&6Ke?d?SL!^@`_#Fw0}{QqD>ej7;aq^2i-LJ(uK1)J>K<(NhP3fSrK zx)J2X#nWDvd{)|gmYI!&+>j9`P=QI3N0h->xI#J?R*FZ+VJD$;31fp$q{k+x+e!ly|(9EgFil`GPH<@MAGh(~l0y z;X}#%?6j*5HSvObaagNGt3mj{{9bE+Q@)@oQX*dh~o}Y92%6Mz*9v%iGhP5 zM?qXe_xynUb0ZNcZcyg~vO1zMrWE+~*?!5MRQVQBK08-OHO2s+*Ro!cphK3<9M1sjUgVQi4 z0bG`o^Ch`*9jN6xTEvsLRiGdc>u*p$@moOfBuW1u>P~gw*MiD-`~t%314?;TzCrM% zo;)#iu(&0FG0wROXWLF~pVlyxS|^3WA>1MAOMsg0T^yzUy(keWxHd zKlsk+=wvUWhU@UE3##E)?chPTj zM7KdgO1eFWEFdWOA^Xkti2dTV+aiU-W5=iZWt`#R3bGGbH>%8OpiN;d z)?VLr*S*HjH2)F*r!pJrLv){a<0nu{$IVJ+zVS{PP>O+Kd}6r&pc&>Z=6zErB!b-- z94_2btY=Zm3L{iB9pUJh;bmhVE3>#9uW>occFo;t>jHU;-NaqAK-#{dux#Y*Eh#BQ ze`1s>5{H8`ja2f^EUB5KGdCj=O2z-a__L1c9wtavLW}Vp6?k zJ5FlyUK_;tTBc=D@eR@EbLWu*xASq@UKGz&OUri{LPWe$Y>KTNRk_MLr`R!o)fTtk+61oU1i~f! z>hiJ=!*Dq~i5~`5=c`t7O4%E@YuY!Zu8Q;uig(fAN-9}Epu^mJX6!_eQ@TaXMi$qt zCeD!4wNW> z+kI^LS<~(QRh1739`&o?E%LwY~js}7_WK7ToKw`f!KuAxVTjx?^ZwW)`R4z z$jlJDWl=(O!VhN@%zJS%V=O7Jm>1YO3ugy$iYKX)Lvqs|XC$%oT>aQfn1MW*fgB}p z0B4fjcY03e@&-$U%jS)rfamx8MU)4g)$l+UN}oS*>%I(Dje>i&$e%?#1yyVG(^sO5 zs7*LKJ0Jc^G#9BmTHrO))2Y@u>PGGr441QweUufQ6;Kv&grbbx>2Wc^rv3vqF$SC9 zU?9oJtF6q6W}tm*R({YEWRJderV(_ZtDAFhG{K3Ue4p~A(Z~oBkh*{IQL-)Aj+9X- z4I@8V((RCkm6WTdyk1-`+|)FO#k!mL?H&64rQ?w{RKpOrZG0sajiPU9%T2t#ddzG@YGdOUQrx!wGz znSnJl%zON=M%Ohq4Rq8;zU4yC<)y0J-a$(ze`<;P4$ z_-x-^t>9sFZSa?TiPGFzFJsh>uv_{nz~rKMt!2(C^_QhycqWgEv z39Ts8L#$k@YGK5iG=D#U@h|>jBqSyJxG&O(TN*!m>aBUWqasNK8AtEZt#f6r-ur*PMYx(w*G;3cQ#?@ad1yZ5kT@oZa$_`W@ zm0;O+!TUw>?>$EO{ilGEl9!kbG(GXI*%On$Ya0U{@quQU*RlH%HyMcceS$rS3nRCp zcu7IP`OlZ`AimU7>UHzWJ1rNFJ5s2HLjFbxw-A%SKXrTA72EdhHE`VtI(toLC{B^!hP88$zn^7NkWYB|m@iG58J@Eoj^okGG z2$$6*#h+1v^vS^oabww7K2RT@W)uGY4Z@d`-<1CP=hKLoKg#87R_JLjfVc&Cd%u)Y zla^I1E-u{YHhAZ7XEHCLp_gcn>&lOce3Y;*+x(+Id4hLXj1lD2n`Z{XujDC?#c?+N zb+XoQ2JQ5NK#|yNC*7Q+@ zm}R5ZQ(nHKqvqePIDL9Ig`&SHwXljdB8#+%_ZCuo>zvj0iz%hBWbekCYBPTFuU|)V zI@?2QO>a8%mk!ICz3{k6FE4uADK8|3O#ea~ZZr{7r{>}R1eG7ZWS3>;S08eW<@MPe z=ga9OVornM5$&7bOAUPE`FAtdB0m%s6jxJfZ!z6I@whIrvr`p76TqmUE?F%5T*bRX zI0Hy57IJb&-trQrOsQ+d<`-G=7_Qx?jp@HDu=uU*LW3*%#c^J3y^xY@>yOTU=Y7(H z&lZIb{CfO8fy!Lq*aGI98wR4LW8!DD@v^ra_FdcYureghN@n&N3>>k z(d4bhO`^ru|ClfcdILRPeSxT()l$$~ZYl}slZ7u0^*3`}F$xsgK-7E5Jrcp8F3u^f z`r+-8Aan4`mlemNoeN){GX`6w=NFx{$5Am|hvb-}AD=J=m!eoigQJSe3{Mq6BZ0 zeR)wpCqx{n2|7%1HP9nW0nm3(>6HtLqX_w-jNRa8M9eizfckPU*2= z|H0J`4RIqoYta1>Z@~Ree#}{|R48gQ&cGHWT(*!RpvpQ|>OnFK~;*wyu? z$nv0*nzwWmUc@N&?h7&y?y4h)7G*e31;OhOy374}Sv0@Ffe)k&JCuG6q@ncpAHy$K zlZY&R=`W6g42k6TGk2CSed4HfpIOjS&mEnK^4h9%8Yohm;DY8ZVu|_speqbH25K~! zVT&kJYT$n|1&0aXHqsd@N zba_|Cz7v|j`AMvp7AD5nDL(w_m5HoqTIhQAh{-XNX7v`8V)zAapb39WYn}8}g$+-H zR=Z(YbMnmdGP}1Ds8x7Amno4!A2p@01TeBaRA$<1o4y^0+GeL^@N4lKt|`~2Zw(<# zNu<73l7F09(@z!UY?eox@;2~M6SLn_`BqBT`?Zd*1=XtUpI%n71uH3rC65ifP>~j7 zb^iUz6fbUn-h69`zm5@)qks!KPK2utt?Id=954w7O_lFrs8>Vuk_3T zW3j@$yEGV$j1o1nfQA;W-u<{(hEnK)&omo`=&qlNfUoH9ew%-B*h}kPaN)0_BL42! z%Wr_$?MP!=Z@TGd?>*I18}U3v1Hh3NiL?BGM_noGEnx=@byc~QygpW>Q~U5v-n_D= zRx@`N6a)_B2AFMM!{_)c?PEuK#+0=#U0*P-*;k=o8nfx!{oQ-rZ^EF6RzTtnxO?Qa z^EQ7CSL}W6qP1I?qq?SWR}P~y#@^-YK+D_OCR$2r3MkG~?E|u)j^#!M76|;Dr=L1S zYh;!;W*S~a3WZntFI8jB7V#gQn)TwayuQ@^py&~`zCSRZc<8YHXTF$6tS&S2ef|f7 z*oA@q66*y>5MIE~lWre3?m3HNVasGKrfoUSZZz&oZr13!JCxneavSXhFSmJrZFS2~ z$l5RvNeG#qVexg$Zj!2v96BtBxjsr6sW2<9ET60!H9z0_%@2NBLaghhOW%i8ttv1I z9MdtLUHgF=$-2_$(3_>D^xDzP$)%(1>V>$iSJ5w=Ti}j5o)mmOj9-t|YPB9x*iQw% z>gJH%eYu4-wqfeITgm)I9|kr$hTmTVCy~6Hdk5{HU5}p(YyUdqXbG>VAm;TKE6%5* ze&lSm)(>r1lpnBpSZg??D^`5fF=C#euc@del=U1rD1mpYOS7KK0PERg?tgn7@52b_ zL<3w%*Z_dydS5jSaTgiB0cKF8t2@8W~tG?F6)zV^bRo)t|;&Mr1dPP1KJM&yNp!{zxn9A+rOD!&@-%gHyjQ%0-u#M@*s6ziPNkJ^v zho7LadLuBX$`X%{+irxC47(7k*h;=Yvt3%{=qdxV>Gj8ZP@ToduSA7pq14YhFNx5v zFQx~YyCWlaKY67{FEZxl>AlihVB8x0&kWO-@oL80NY_+9H7jpwC=NC}JbyF%v~>G2 z@7<3Mxn{qX@<%D4p^glT9C}^({5MmVNwda7;cfzzNLD+g%_fYqON-O8$r`9-ewPGT zSAsV0*GOvX8gC56H%nP3)pSpp#KMC;1~cAvJ+ygVQ6V=luurpoU+L<8P?8B>UvSg+ z(&!l@5sP~>oHz>?)x>1}TAJkKWcfNDOxg4!yMjW$Ej^p4_|q+D--7kug}`$5x0z$| z;v!ZK4Q)*gM^6gp=XVkFya~~9wj0UHb|2-e#c%~M)=g>dTuj1Jm;?mUAhJnsDPjD3 z5c~CF0`_g^d)`8k(NX!iG<9{464~{5Jb1quV8vJfFh_7fK|y6DtLD*OqVHEg+X-*E zP*idtjDQaGk33(W@@UKKzl>s4P#0;kKFPKGoiJ5@8-PznTdX?0pLm^5e(i;vO(#bl z(rwR>+$wgzqop2;&$9aHGfR{CELG-pU8vSn{feTJtch_dH}sc#WCF`hF3{9&+C@E^ zO-u54!HF3YmY1J#Hpp(qpiu{IKFp}zR9?bL7RdCxdlEebd=Uzz4~q=nG&AKe>r@fp z?#d$l$VylmQG8hk-(!Juht^AocS;2v@}C)J`P5iDSo{?0HR~_&-?u4+NuxjnJX^WN#%_~*F0T1Ok7<*x;FK;})u*U#IZGmKKs z?moS1y^?m4L!0w6b_JCZ>G|dXt^B%X$OvJCJqoXs;#P*mT4+ui8zdVr%gdD$SdoJYM{s8U_ ztmgDr)>boTR04;MHp#VP&g;4)_w0Ji4bAgr^NUrbF_*cdVkbW`J$R6}uxb*Lk?k*+ z{l(`3%?@Y4iaw)pu<24Yva4azL)Kwz6YG~@v2mq-AlJ>Fu$CKP-#gYE^iA?p1@XWb z=^7nY#IywZv+TP%SW5P&)g6Gt^LhO~r}I5WLKn)H->z!S?|ATn)7>!ooZ{@%)Ag-( z@ZqdmNg|KDoZ2-=$UQ&}fcoitElF^^%q`Au)&5m@(R=NIR?hEmSexwcUp;*yGH7VHL7TuD+tL@QfJvxwU=A!kv9b=!1fXj){VM zztveu9_Dc$Ssy^BBhj(Yrog>WsG%irtH22!Jq6d$W%tH50CaFNznR9JYUJ1&yp zj+h9TuP4PJ@Ny{=Rf(OttD9qO+X z)TNh48$MeJY{45+30&iu%(WV)@FEQyX-)1IbuvT0rlTqDi?=nDwZO2cN8gu(gm-ZF27MII2A^iRn zhM9RaY322;;Lp*ilea#;+Op<`BSzyRb;8fTUnpsJ^ zYV8;qW#<--8-JCmgZ#M)>ZlZM;Fz2kMtaMEgMoE3KfqIbo#=i%EQw3|>OQ@UC*0Nb z#<%Fk9tA6qVxBGo%)&nBX)3qPScMRypqEl5t7!Yt=+Igch^3BJF^wtHBp4XY*VfeR z&&4)?X}@Rl(p%Y(n00qXK*rl^)owXxe|Z1L8ZFnvtnrU#FYdSuZUewfR9B%(QBu<0 z+g!Bv70qQMfKn%>`g~oY1Q7oIm%Ktey2Gy?u(Gxg3MwVQ>fD+Wy>#r`Z-x zrCNq|{csu&ZD?*bj~fo|%Z$dAM2HK8_=9r;6^km=B4Q+%rr!2)OS{}~1v%xI=;#y% z&#$4`SpIF@)D%Q%^Ji_Ctb=#VIw2ql@Hm$0dmh2T{epwW zL<>T5+G5LWbMyM)u>VP6x^;%Vey~tBF=lMSYU0CLWo&fx_=uv$2eakAZaqM9v$-~T zJ&>@v)NFlD;=qiKZqR`hEh3ZlA*gN1`R1vIs^O1V-xpHiLA9s&Nd9duw{zNjT9&i5 zY168S-Cd&8)Rc($?AHCqE;JZ7Ky>4NGdh0ljX5G-UDY2~jNOo2kq(VYmt`r|Ff>k= z$P^2G!_w84g#>CVsOZqkXJ?gyEh8e1M)NkBThZVRPU5MPQ{Jww>5q>qPI%Od%7`#t zI-o^&o1QGure_a3>JKuJI5N(bp@&k@QQmk0lMR~^`@dTE`d}}54{QpOY{SE}s&|a0+iPrf z&tjG4WKK3{%=8I6+hb1Sey{wT>^41MA06UV;k)zDNSHWHdSdJ4Gq=s_yiN93lAp+S`Vn4wa5iiDg>QUI6`4YjYW8{0=1Enm%Yw+swL(> zCU>p)bPkSB44cTy|GJ<-gE$7O66Uw~ROi%h7p9kuOKkLXi5jh~l4tAxXkhQ|?y0I; zR6qTVmO>G4dAcDJyo|D9REo^MU}JH2@=t^$-2&=CHU&2}(%cKYpkj+m6yOHqV!Iw( zizqV&4t0iW-oZAZw$hPhPjEp{)K3Wzo4&#?(WsMER$lkjeiz*>F5WLH-v7h)WccS@ z4cNjyCJLK51A1a?Z-TM$1)~^62Yj+G?ZmQmiSSOrr8Da6_uYP|ur6IPZ5?hk zazXINje54sd|wI`NEYZnQRvpzreVwz5U%7BR+wy?dM6E5FCJoO74uf@G|%_X#+82e zLb{*x2)_}TR> zq7gv(DU2{UR588Xqp7YQt7aN|dFnv-u?hbTHlZskC6z5tvE`3OEnraI3$U?G({pQ9 zEoUZJ5$O@@y=Q+u*A0efOuf|T9g&;+Skd=(YBL`EAV(cAFr5JLd=<$N4V zbYFJ4Dt@1IVNrpp0rf}Niw3BEVW!di;Bnn92MmmmfUuT}%e7UTHVu~sp`r+*zC%LH zQXc0eOwJyQLxh%3O6b|1=gPV-!!erPCyi%FuwI|!W*=3Z8kIWF+-?y5JsG^S{J^MA z*K$>+yAUw72qkWTh-S-oM=Omp2X@a@|4}8Pm(D9KB&8~%1k0d_Z?wubLMEuQp^pNm55-H^aUDac3ND0=FYUwO4PR1_rAjCx+gf5baE zk-;dMZJa$B+4};qaCxHC2$dL4?CpXlZ;RS8be{+i13Sz}5}Ovvg58#>mf~PC3uW z>pl=ERveehJs^M{6w(sUC#%t%mw0pnGlr_LVC$u@y!h_{50PA2b*HWCCmCFUBYS%V znpQ&;tVW3bC%{k#)@OCK!vpAJ?v)Fwg|0qBJ=EmK+^Alb^ zXC!2^*l5mtNfz8f#h?ZXkq1A$16u<74EBkUbY5{LKBs3%K0338eS=VbM5kU1b#Mo_ z?KY8e>W)bx5#}qgd*s8xh$j{U^RjRHZO5oa4n`N>s+3l zvv>&Y7ImEDw6~LH=NLgQPqbIDz`D~Bcz)RkPl|s&Jc-3-erUItZdH4*;q^T%?sr!C zzLZjf?oko2g^QBizrbxs;~N>#nws;6*gA0^w*-saIYrjKT*<{B#NZ|u`x$kmpoc0C zq8?sc)85T?Dt!8rTd!~OQu?rv(;CLRBnnALHwdt)g^k@{E7o);#D%KIujx8mH{IR%_L zePzJsJA^MRv~_yqj*G{55FJX5F_`*cqPST7y~ncg;^#>@E7Sv?BVZFOT+hyz{mNNT z0FGoK1>goy`i7131`E89#TfxuZS}^qrdO~6HxSOhW6Lm`Z=jK?!-d)%9?+fhM@>$B zOiWgNK~QM+^sx{l*wO<)fcYCnks>8Ib>&8Gsi72BVRpW7rkL6p^Yj^n{g~J=)gg^e zox!RgF!BpiC>f>L_=I8_r{(3s9?rA#+m+m`yfUlKNnjyuZkdXS%Y$n3l(!b1*M|KW zY|*o;bOUK@I=~hOP9alb4EVoJNELR5<4t5>clm+F2;E)0@noc=SuzqI``Ol87jWXU5{a^ zL~qwG7H!L>)b1G{oX2#dfW_lGJCk582f=VZQYgz*y4$DnsaibFS|--5UEcb%;~;S` zQVCW(@UBB}w}N&F{?W?x(CitAq$5>3I3%dm;c(yosC=^J**xn)z(^fG_swqq)FuV@ zA=(bT#hw8;s?hI`h>xB>8C6Na6{^*rpUg^6SCtX58?UGX)A&C>4&(Zxni{i2v#zZ2 zpUf2qyz*y2lY9Sld=B$@7|g$yciBk z1lY;4Ky*q*ql%7XM}N!F-H^rzmZ^<;!;2jv$aEevraQxrr+;` zlzPqNngeSbjgP6Tcs$$cl|!o@9~C#f3DvZl@6=GfKuZliIEkm_K5Kz%ajA!8%CeXx z3gY0Qk$G`gP)K9+9xK+j4k$xS7DebS_E9NN$aqx`gq*umMtjNn!>Yh@pM=ze=+uOh zKlum02YK+e=h8Uw>+(YQR`kC}8fp-$)L@$jW^D+a0BGZ(P+vchO4Z$R;*W8CX+0b!x_K?8TXV-j zR6x~R5iNwhVaZd_d%DT?MiS8K<_JGGE$ER-0Z;asZolKZ1xhW~3vX5XWgQ@BV$I#b>$^HB7(7Zth}KM2s-op46&<@_ z>GJ1h^DYdapWb1wa-VH@b?G8`-4QKyG&wfHDf&I| zr^EWFlJZ&L`?*=y6wF*^OS@txh9Oo3Z~m9) zEt3YCm%8CVv76R#xmX9O!Bf7x!u*%JRvccxpFVrWc87RtuoKS`XV~bUdpBdVlB&Wh zDrllsmsn8I(EAfaqfS(2hgLT3WE!;%3^v{;(BN8xejk7UYk7Vob#-zq0y%s9<@1yC zwhj7Qep_1vl5CQjL~PL4Y+`soUi8*tHm%?BlZjeKHV)Eb0b;Ix1BN`K#4WGq5Bu)_=cb7x>d>HOm^rx-gTqM|2*3Xb6vwLxk9yLuFEv09F?6 z*1|b+b^_(9jheLZ&n+HXUH;r%cA@X0hnQ|O(5AJrQ=QrHPrpv$Z?g|e6QEq~g zS(8Y^TbiF?L>8}4X5TAC)$SA&Lq2`KdV66=L5||k2qL7k+y-F({9yq`83x`Oz|8%>jP`jT}T7m>0BbSu( z{sh*5i#TI1z*ayA>y2)0IU!ECn!fkDr8O=s?=l*4pFTuWwJFwET=Rq07hu*b;GkZv zrTGv{gMv}%yxXySY|?XU)8V%{K|KY~K<;24AwEL_^U|;lI8O|vRX>;!d395>;?Mus z5W*uT%e_CkNC+vK1NJzRTObEg6U66N*UIg$WoY&V9qni&F5@YIYeZJXaS*;2_qWu9 zO6P@`X$7uC_z-C$_m&f0ep~E=?_RR1_U6lJ4Xh^@-w!YKRupP>xkZiMIj`9r!-I&U zw5a%v!|Zdy`3i%J*4;VpYg2@v(gn}tXqCf$%-$p_ubsQf`;>-Ow{LNgDd3DqK41B* zw0st2{YyjY?+ADET_zLz|1HGrU?tU`aglq7NCN_ohO-A(&pKAy%DSfdIqt?L$4zUN zEM`M#v8^n|9p!qelo*q6<6Z?q;(!)5CO1$s**B|E4NZ}YN;q~NR56&|0&- z5zz7`v&MD56^H6txMNE!YNTSpzb3K{qjsEUCL~QkL+kjqw0Mh<9wM{PjJ;W6IdWT@ zLv>s!;(1lsaVRE~e-wW1t`r#`d-R)Ud!NnUL;^$v&jz`{CYW6CJ4Q2?NwRoL34IXp zHe&Up>>V2mJ-2*k0e&zaQj-$)}l1#Iw_Fm1LVCAVBxFJcUVHYtP5) zN)bapeBno@Zu{y;Q56RdT`5gpZ*VXW?V1H{B05lIRIb2Izt{wc+3n)P-zBs)>pLa7Jt|#*7lr5TXmgq zcY0#v4knoe1Te$8+zA=NR$tGAUb&Vw);qRa4E|*FVo}OHtYIQqer4hKsc+7ynS^+2 zmwXQKV06*px-^xjrhHhI%{(qS(a^z$PdLv?)1a=(`?XU+-r$o8>B9Gn>Z2G(f7wu! z4>r_$DTndUG#?EK7>Y=H7Dow^>!ud91G)qHV4xgt`e z${Eb*@_!7*H{J7Z7Q+q#t;XdtXDueyy}`|w8h`My;Y1(AG!*onEG>aNAx$FVv|bjq zl=#Sw!5@%H^Za5pL6amhfbp6XX4r>>QGjQk`&&Y6gZ#L~T*U->#+V9aUjsJ3=+){pYl1=p6>%0f|d32rY^vB6o2>R+8@aq=@+ws_KxLF8E zTgp@=1d8(ufi2^~b!*tFdn z+@>NPH8vWyG3tiY)|fU>7$jQcM3fU=mzh_+E?8 zzUobk+oFa(WAhcWLT9p%1>m52o4PGS>1wP_OP=U4GLz z?H8bGH+M2SH-Z+_xeh7t__5>t^3GUue|FNOb#9zPL#7>PX7{JD6b?>?sBE#YjF-pS z)8KB=b1&V!RtTo%a>LW_Ph(Br>)M*l5S{-4-u&kpD434-Vx9d*nt}F8=isftuZ(B~ z#!9>6?pVlMb6SvnvCvPS-7GZS+2k(e2Vr837PZX6eklgPB1M{uHhIz@H#t076B&%TdShL1<{Jf-lmA z_%PyQa5-(bImo>_mVr$jj*K^DxA+O(x8kZ7-H^i3CN6Sv71}$pu+lL8{fvRgOd5}`MRkBtcn{5Z)xiIQifOjY< zk>(fn>(-a2K%?A`N)`6Mxcf;xl%e(7H$vI&LvrUJbV<~B++fv3Wrc*C9)5pfpl{r8 zk>-3&^x2EP4`X~T;|^`)i~aL9)<2<4q33PCWyY22lHygr;T&9A?iG~Q#Kx+?2Nw4? zlnbpCOU=-UC)Ai4R<>2h>9!aE0i6*`dnDk}`5f|*;`N;GdxYo(c(hTb$~9a}65-0l zJ>FzgT-PC=B3M786u6;0C~wT*ad>-z#~j25yzO>bE~ z0TBYW&cy_x*X4s9#sL(}lQFRoto(eM!F`BPFR$x@;t9;{&4G20gbTF}D8cH{)@Ezf zG&t?xG7DFWea7Zu1L~~aAlk<(x!hYQdhT(3fO=F9d4i$6{K5j7Z_GBWMS&nRXd{+C zY=sJWyeKHxX|+(}H7KKvbvA5v8C4ZxP8PlP$xN8+g|l!Sn|9sV2R7R1`>f8q3;Y!1 zr|+`^p@l#G zb7WWTU=NT75uq2NYv{4QLZtOGiTX8ug5PED?mP;4#R!j1(9q+_at+qkFbzNsB-b#a zSF~cZkDu%|do)WDgtJX1praw?2jPX@c zQVg?U9pfxF0ugliEzBInHK*;`B@j~ACSV8KQI<3@M&7Sc4-x}1jP-()Z z?MIX#Yc{dD*J6gB@KI!7~ySS3Nae?b}-kI$?2Hid*{C14$HMZ}zhY z#v~@(?_H4>U*4s~&-ot*3C^Od`2{h&!#3>?P-0{tuk^sOy4|MgeVwGCt$11!@ZZ8? z*VQG;0dhYx>U7_jkNP@h0hpu7dhc$XUWJK9O|u^Y!>_sL(_&j^G*)M{&D}Q**S9OD zu;iH`cUJOzX?2ZfN?Fib{BEfS<^5-jXKErwFY!L%pRym9u55VT9U=7irwJYw=B?gE zmX_qqC0@Sprua`HEB7uW;Aug2bD^>*>5eiTU>9{+!tB$ph>~XnXUUv9Q(4O%t2Rx1 z&M?>(b-#8lnlf-qp)C#8=y<_z@gA=i6u@~NW@XIvk$aUK#O+E+8@lHKlp^wbZ2nJtNa7)d(xj^k0H3&!*Nv- zvT|$?4`YBVb+}K2ESFbpNr(9xePfFPI zU~F<^cV01>o&PIV0<_KlyiAjO(#K}KJYCsJ@fd-4VwH(a--!@IgqN-61FFxz#bRQ% z8ZtyfQc0Ru$>2XNx5@)O&aCx%1%pK;?(Gs^o6f=G(PC1z*0r0pZ#FLYhRzXCC zu0GB$@k{f7Z{fugfjWePD#HKw{9A!Yuxoy7m)Y50={1(3npZapa&pbX3lwyeE4Zxe z#vtrJlaG^xYlX`eH)CA|hYuP_NP@>j$$sj5RD;tOia>rLJ<5Rj@kun#O@@xCREc0B z4$kkQ!q}MgJIhcn$D85QQaEpGwHlj0-XMaZYJFM~v6J(hd!xU#=Ox0Q?71J>v^|4l z3m(zJZS6slk8N7?Pb^vRu;9J8Ooi9MDSe`BGgUOHB7L1UBVqj^kQ?cl-8)*j(ohUWGgdkG?$Z=`25JhwpxtqruA{@>!_aB z6hCi-BLh6>garii)ztaK#Aeeu=_?B;N=b+VYkQ1cMNf8uS&gyU2DcHoC?8I1(M#oZAQNwe;vljo1 z=@QkE-lDIP3BHB;^Txi4{@Db0ODou}T_tJC#IT9yia$Wp^gs%;BA` zWG%S^ZzMj-s|!yW!dPjD9A|Y$4EHOKAk*I{#l?!3=7S6=YU!Ym3Gl*ZL(&BBIHw!( znHaNcGMN4>LZ;;ib*r)iWs_RIXS@uVs4CBw%|?%r((H_K!-~QZ|8gb-4RyDQ@cbBC z_-oBSU{~j-c1`AZdc)J2Z7)}SYmd4?wvz^*|wjcpo zd)L4PaC*SRzzB{_i9Wzb`wh7j(iUmdGPM^C@D|Swv$r!Wp91Zgfp-OR?KzBZ#3-@! zOLj)it~JHlhm;{=(NWl2>yk$A9QQadu%cx(G(d`~Z~L}>8iKH4fN0wo`=3*Mazi%FkBr$LXd`b7us0$b&1DtlCe7t0Ry>($ z7jE|NF@B_8ISYd3wHNpc+V@ns1%y2g<1hQ&!}i(P$M25ou?(i?4tl=5!ZBh4*#3cX ztj<@T)l}>}R=h##0rs{*Te;4&^*)Gmf1BVMaUg7zhYXI0gX(gZ9M7LzJvDLTt;4}% zCoUKZpF76*T0@wKn{%uWO!wjV9yfdp;%7T?J2UK&X8z|}2R+oESj>~(JTgA7&TO0w zrt3a9DmOuF-3Sku+#rHl2(Wz+Mc@wcA-mWtrS^6ve_KOyzbi|OtaG+75sks2>VY~v zzF$rE-UmAsrRNtO5PYDn%C>+;w@aQ#ggl0^*OLxo>Ba27y!cfNEPZ^Q3ruInxxDXs zev?*p-%EPtAMZIh_ch9}l&EsLEvwc7xDhE?ES zbRh?tLfhka%41Uae^SuSUw(={sEbYqPvj(%-DCeg8KR1gA1cZ8&oEQ&Cb`hu8# z4eI(?T9bFJ_-X*XV^^VBhudO4O_$QxNab6udC%itUKof5@3F+1ky6%+mvh{?XHAC& znL!LcBW7xQ`7ykbyjpE|`AOF!JMJ~oy>@~9+1!IEckc)yK4u%dv-1}hR!@CA&lbgZ zN4+R&3Ezgrgd{J0*3o^Mp8lQDadd%qu!ZWFAsbyuA1$_H#|{ODNW5Q>aweoHm2U&F z!)3mJj#3s3<<0w!DVNpQv&s%*iA=#dpq*Zp&r*;m3gqe>Z_lhI^A`?}Ce1UKL7qP( z(bygWK(!{QB5X5i+^5IE?n$zM$3#U$MNYn|;@#1kt(n1vAeBB|ZKH+07f5N>0Q!oK zh7o-ex;J}t25c383_3;#(l^kj=?ftX$Kn1N*#LRbB4kG<(jwJ(v1*`++fU8Z4g7W2V`NM>S@F3d5#pB_ybH~{7d6Lb=H%dMV;GZq&o{+h` zB+m^9EH1u|4ms@U7vX;N9e~zB0ttYt{Xb%=d^oC?Lj&6zB8~(Ri$YBK@NSv8s+b7W zfaMi*jK-LfQXkq>$Yi}`aBZUxE-;a46Uh8`CABrBG9KmNvEplOQ$cm-UPch+nFZ~ z-hUzb&w3~5Eol1LIY7Cnv6enRgh=m+#mixBm?6BsYnSZcZ;I~h(Jlg%wR$-@1d-}vhv8d{{TI}wP;a$NAQXN zI)-fitup-U>ZZ{DM;AVqP%sb{Rz75r4G(9bJ^}O){0f3p_Jm-1IXIv}D@&vn8R)3N z!TaF>fAH5Y(0^S~z=ibSU+hqZugfNAJ_35|J%U!>s+UngY0N#N|0xn|h%#T?egvaV z$UxZJT*_S!CNzC|@!KX5u+HaQ54XF6CvS~NNb`Hdk89%mP=%4?6(fjc$g8_#mQWZLclzv^zM&(ZgM)?tc#CBRQ${oZsQ5B9 zHr+r=!_u3eP$~N}88%|nig)4Ac_F;hj_d*z$^lYrC&i_QB4hGN^T3lKsZvv{q88c~Be%lF1F5gzdvmp42QSy2g8d+II#{-*B z=DLP}9799F;A^2zF9FU%r9Cvmry^Hwl5G%sY|FqBCmh|0sH_}C4!68I?XM#z_LT3| zbG0DDdybxmZub7dfs%5&O9wKbc?S9gouk!mG%tZW8=AGL%I@b_%{Ja(8%G-1o=D(1 zKkFnnm>34oo}PWW^OA$d#;QD4)XlxMT8-}LXOQ@lGy5?Y=Cr13ns-c&lTP^2OE0Wc zBwp-3p6b!!vc3f!HSma&_jz6o^icx5(~RmH>9oy)f+B*(rN=ULugV+lnT-1@x@+Qu z8+)vH;GJ(dPjgE#O-%EcUea(=?tD>^6;}SjB-Jw|+d0xWxTZm`?8VtVFatVsd-#{K zxU~>1=D6Mn>FZ;TO^mFq=@(sNOX9K$DhWlp*DSrUw%w&}Z1@`T9y-^N(1L{h7-GO| z&|KD zjNMK0wiD|a<5LwU$HYWstC;KRWR@5z5zg_O`0lL`e)sMEI+;ub6dxftTO_MW1JV=p z+CqRuLk9PNKUL?Qnogvcvd2vX*R**9d#y@$w8&ju?~?V8R>p7NmtH&*GFU818O;#= z_*|Xq5FYVm=o%>;+glanT04<$AcH zoEq*e88={1nRT#B!hX{4s3Ot%2F#Pa6SNwhbv8WWBAlQX!jG#imVWmKWoz$tXDA z&-|=HXtfeuQFMK-b~Jnm#B*~0+Va-CCh$9pnhubOrqJ%FIz4>@1G&bcJOKzRsv-~p%+2ThCs1wc$;SVh1@M1-)_vz4vR8Rti^vpLKve*AR99uLsfyvQYTI+qCFex80SiapRbzwC*jV{iH zzw3K3LlM7h_ zanS?i;wQI~FCF|4YwGTqel%tz#v7tW_7d#WzQFp95(tP{7S9A4vq&613oQDPR@%bD z2lv8$I8FIr_|C;}F7JzP$66`>LXcC^kK ztwO-&#asKp`j9)wi<9#L{O(Ga_52ac46>BCyns~q!i4?q;hiFtQlohDlE#c2uZ|oW zh?pE48*yS7K5v|p^wa^|m|z(I1|AG&3r9;7KI94pCMQfctCj%FJCs!y56#d>0bIYA zRhHWs3?od;k2bPf6bMOTzGFl1pqo~9i z)MuhCW(!HMrGh|!9}RtVLF#y=q-~lAktN60mVvKSukPeTb(b|V&{6rf?SUaGJi(Jn zCe}YZCgZg-!LPrXBwTHja`pD0>fx^-3k4;UtR$F%|E#nNIe<@wjMI8a_UX9JysFYjJ?n8+WcG@uo zDe2{x@SjR=Laz6ozwrK4UMJI}K~&WdgSJ+5gWVh^naDU!%fuPkp^JoNOzH~NIg3rJ zJ~8j=WDDMa9o^?f!}&%C4J~$U9bH9fk{tWv%G|Y(1m~2wBVbdS{ThOEaSL=u;I~H5 zr6aE-U$1;h(bPj4z;41XiU8k}VIbukGgZes{d6V!kLth~5mjxB^9u_6E*(5GUe`3^ z_wo4*c%;Ta$)2trP=i)p&SYBkE$6w@FI`<*jJh|JfgcGJ+izl{;xv@y_Sm}&mx>}A zqgVTQSdwV9oT@$llFE}-C!i={(kD%4-SMEB5(b9ELQ07X_pIw%%q)_2tdgRN^0;f0 zJL)Z2*d$NlcF%SFwkO|kc&cwqoD##gqPg3sLMQhLOYYl4HMj&W^@gj%7R)p>bi2vN zN(xGf5%HvO{94j}MST3;H%HPsC{BAl!j#nAjNghhkhI6gMyRRG_PG&5Bzl&)3bQDT z^wVQw679~yWW>}+gF6PODcFt&=c|*D03wQ6qot`jFgZD7u&^uU^sNy&_3$j12r78O zS5}vR9;*I(v*9OW^VL~JauEbAOPS9=dDa)`8Vml)G$KTgo$E@w@w<5@6zthz%(OoV z0jm_ORe+NB)Y$@?v$hCHbCPivT4_Tft{#|$p_5O*B7%V#b925DP3j{Sbc9;ppBHbj zh!Im8&!%q9fEBo!(E5bNN2}9A_D_2;NBENiPQ=xeu~B85{hpKq1Ir8}!wk&V82GO- z2Hlk9qu5Qq5xW!-4E8T4H=mvkpA6x%(wI+O`M|0+2THoHqn`JXhe%q6+U{JO3VFN( z(7S|n&p($^RxNN=E!VW00Hx19r7WOXH+@Y?n*Rj1U%NR7^lI_p`KY4c3>A1G!mOoG z?lp$4^^tzer+iG+&6^G5f|Pc-NIZZei}%y2UB+A~w<|Wgdcl_3Gmi5V)V#(YRq~Dd zrj8H7FzEAdXIhxOt})S#LM29XnwKDoK_z~SU=&)lf76N>K<3A;U79kwxbTrrOISXt z;Cl%tAji5^VgwtS{*3W>RAA=(jadP;gqT=QkNB)Qwnw$8-}f&VSGF8xdf=oKGgWf1 z$eg{I*1)0v#wHK8Dex_TuJC##aQ%1v?X!>@V=u@w4J;0-nwm*sOjdKrb#ngxiP1~U z@;gH52|$_g4GUCc2P~8f>?z5?nK)<4u(6$I%fbQUbD`KIrZ{^zF*{o7Wpy?Q)R6bN z)^H86UtUC$y@Y_SCuVU{HdV|@5%H0caUeyW z-V_6(B8}D}lm>3dEiqa|c%Uo&%+h;E$nj8T+9WF_r75PiRt#GTw9~+o1*`TcQST)-po&PqOQKji~I!EC04ys8G( ztxs@oq;U^M%$GXsIwg;+Cx+!Sn`ZY)OY`rx!^vOan$HqOLOrOlHay@p!VEo6LLq`a z#SqTleXuuMm&;+Hi{(GZsi>+hl(0vggA#cZ7OEZ}j(VuO2GosG0uSK!`u8g4|C3h- zhI;$L`+=?KuMZCGL4mI@F#X0<2m${>*n#f@^%wu^_y;!5RJx?kCyD>>Y;ETJ<+nx> z5I?*F=q*Exe|_h_w+{u2Iy%A(eF#SP-2~3#rfrPlA>vUXXbfDRco~hIg8P>*$$Rnn zsm`P~lEz;Tp?-CN2DLb$$1lJFru0BM1%4Uw^U@;xn|o{sjRcMZU;aVK0vGi(7h?oE zpWt`}B@V0fx$u%ZI8^=XQhj;gB04jtNqGkHKa^CDM3Eiqb_xFZ0$qapZ>HbK{-LDe zg#i?06dVC#1P@=p>z4H*lK8J@|KtBuC%y}j2ug$nj-e70{?)%pPn<~>@cBjf9+Vq+ zFHhjyF)Q=A{`~b+t~g-8*njN`03G?9jsJ5h$BoqW}ergjQbZ_(j<;?=U18_YeB%$!f zcjOhHbKOad&7Xkml|vu&^EGRY&P^xFXZ^ynWzgLh2JYwU%#`Q__iFj1mMn$2*?EC$a-j18g4vF2@iByX@W5tuKL{ef`#DeB*M^ zSFGH&0DHyjL%PLQS6)71lRXo_6$draP^!6DQ2To_#^bQpF}rO|<+5fRXj4fB8jLB9 zuC9)UT+f81nQ>XNTjg2Yf=xlXk~M-&s53s8@(#LsE3 zKMKnUftW5_b^gp(`+&nkIB&R1C$GaR(4>Qg^N!#o)aw-VYfqqLVtckinE5fzB1UEO zb$M`?#jQ8zJ#dc4R2nSE`^>1+zvwm^Rc3m(S*3P|x@dwVU}jdq!6xUY0dXli4XsDR z0v214H6+izNw;Yl!*<%is1Op9XQZRw@#rL2dnm@8pp?t@8JD!zje4NUgzHA@Q{eEx zm#x1g8F%ZBe)};S|K{4hg|w=CTCS<;nu>RzQ@QK^ z2|vqEhxr!{cA>4l=Qw$D2%JH;yRE@3$j84Le+1wpVZ1jj?DjuRq;fU16*IIo{C0m! zTub?SEJusNG4Iz4d(q%uZpS;ny|dmN|Hvu2+{-NV4Sauc-#pqw_gW52^dqA?lDnG> zcO@Io+Y^pJ`U52G+BVB&_ba>lW5Wp=Uq7_5$Bw`9SA$L{|EIvd++xxJ8Ej!p9tW}N|vXSCkQ zGO=%?Y@=*aL2*8!2@9vEP`(ZEgoU;ThwVU`O1AzgoHvDNP(g;i2B$q3y^QmJ)rb_s=O;o`e9t9l#(Ze+G|C~`|a?e2gnK%-q>TEq1B?14KX zOe>%=<+KnUSVg5DGdywM9XaNAkWDX{{|(f|*Z;d)mw}(|ZD76A_xc~ae<)d^hsO%lQ40>8FFCTZmrN37 zkHXf*nRd+5?VK(m<>XNsf)hLP@&|$u$V)R0Hv2fNSj^x0616UsRT4d}lL(im$oM)V zE8#Qw7gmfa8n$mHQJEFGZKpqjhWGwDTyaf&uiHTeAMHg!NECd+zV7=?d^82cW!y=n z7=-+?nheFRN>oqIb_vY!7$|ti%cAYpj`}z04G%irMkQqNnaiD$=0}3U3`&l{ZHomqn|aL#izi^1$e4!zGQpK9D8*ddJ@RkM%U?DOF&!dfwsJ zaeN}?!+-*7C>8$!)+}21T`b=6z-M)>N}iB-fR1905B{iZ5xW z{~oIv-C)%tw`tZ`wp~^O#~pzhm|rl)NdFv#o6+v6*TnXE6BB(qA763!xH`J}HLaiQ>L5YawL9Cm%9- zuoy*N+}V$D{2GfC-LCd%j+sOvxY6^z1|URe$cZ<1Tb(E=piqV+R~==+KYtkylPrDo z-J-gT3CsqhYjs#><5Y!Fu#Imu)Rd{3ataD4WP}EPaL*v86?LV9UEt4&zry3juIR>b zS)69sU0Iys;`}HgKXQ1K2GL#PoBof|c%1VMl+>INS_-k)m%D3`xT}vVeE@S6m!dZT zDAI`-76uT6#0R^E9p%4dB~!-~*ZMjfXurdOHyq(rSUe(^g&;%KEfYZ1D;<2%jB^0- zyq^D7>J_U{tle2b=mBfgxrOf!kTbaG?&qjTceycDudeUo8%B1`M5J#dj@^=(`dfi^ z0s6KUi=I#~XO`V$_PySQT#&jeSYiNe z;-H6+>r%Lm+e})RAsr_-G=$Y)Qd*H3`81ZQFoP~LPZGHuWPD$$U)EKm5-J7dWLWJs zuJ#I%p}knGZg$k z4E_Ic0c!dGbKvS<&RBr#nSc{izwm-OS)IYEy-5x3(${d_m&W@M1_=HrTtd3ycL*&% zWVmg2+Ix#3>vOZ0Z;zd)f9c@&17dI|@iD98PO?o&?e92vG;;&))UN`?OG4gx$9IJfk%(_a;~`&mq4 zVg;eGc*Br2%$S3#6Fz5q;qbVH@s&z2^0^EMr zYTRKj?o30#rX~B2Cx6-N45Gwc|7J2wBehb6Q$${OBjlS~)!- znw6bB^w)n_^`{OA+x%GF|MjH66f=u~+~H6d4)S^J0U^#m3i;uCc{N&J{=#c`^gRY` ze1^YP=ga4a)eY|Q;c_)ngK0s_*~ z(hbr*qew_egS2#a!@$tp-9vYG3^V(}`+4r?_wM)E?>_ebdmZb*n8lj4t~{^v`kddh z`MvFUaNVNV#Grsikli5iR$1AjgYnIkv9TS`SqKi$gvigNuozJ}4QsKa@g`m>;VcW_ z#co30#2aGw&oNt*^kZvvANF~~7RxazBqo-v^T?d5ZHlG0O%MPX@XXZg{GasHqDso4 zK+t-JZQO0}ldFUTgX%$ZbQEF1y?yv7%PZ@nBX?kHk*%JM#GJC%su7C-c3^tas<$?< zk1|oS{L8qwtxsusSZrvx+TQXhVRp{?k_Z8Hm7qf(H^)aa6IapQw>T}oDMjvK68Zft zPW$KWzgl8qG?Kw?Bqh9M&aO-~U9IDVoqMGwhh~E_xNumC+r#1NRnr+fF7azlg)j=$ z7R$#>pN9pBKNvA0TWV_m)lCYYp=ZuofPb`>7}@-BO7bVe~6J`@k<|*HLSA zdHlT{Ps#7X^1Ir#%lMWo4n<6(eR}(#R=UX!YJPuZD1*vXKv|Vs)9P&XY)#P|p zXY&c+uv$-OTUi_^wNNX?LaK3(x%|;f`H0;I`uFan8sKlA9|};ivFaMr=56WA8z{|G zOcgvKPzl9OOG|UGiZ-##9=S6$RSOat^H9`kA z|q@_XujUO3Fm85dJbY%#}!(uG(b| z>v-M;Xo+ICfmbhXl{F@JGFFJ}@I9jKLLRhT4MCyLC6*0Sno`(=n+Dqt@E;Vpg-pG} zb`^DwhIt%>B?zz}7uqvs-=zbuDSf+CfyP3ejqjy)Tdm~`R78Mtc*3pCap?S(naLwz z4%avHY7-r|glT7=sVReHHeZWNSWZanx1sZ!^<8+(J4;J$NGYlFfv@8S zh|n8nbHm)KO&=otyE59c$6X_Oj5!dXceoos3Q{HMD}9#v<{wG%rFCI_S{UzTnCAGWLE5((f6*ult5f;lL@6B4 z!;g+{-s}ukvauB_m!E($@JW6y9o%95gOWj7MBY`VH6AbDzdSzI)%W$p>$Z;U%-6l| z$D(+l2TpBO*gkZxphZgO0JdJo*YF6`$l#!-mUT+Y6{djIXU^7doNiS*;zL? zSxwX~-(mh~Z}BVj`y^H8X>ep^Zr069ENv#Hoay7M!BOqaxeoR9=ySM*`ov%(lC@Na zFWIcz;MwFLbnueN=BV9_2MUa|isLMgBhANdMCN>!w1YztoJMh44SkVA#CeE4?E_O@2s z-5S1XSN0d2)Gs(ig@uLt>ifGJ2L~r*WVBw9Be@tn_%ieJlRv&A@%r-;f7NOU+no58 zV2{3xf2qrym$u9+T5%s2eD;>_J975xlCl8g8b-oH2N_ry2s49IQz_Kdw4})j z)Ze&Vq@sF8@rWZ&F6YJL(8|~mVJW}~|0~usn%GP&W;6HlL_@;F-3wnh^>)&~x+`EH zQq094l_4Rk_6PGbZSxAWN9?SFYaZL%4li@f!TI3eP(BQIP(h)XeMt3XWWlL|1?h}H zD-BGSI7W?qg;`QU#?9%n8r@~&&Xh;e%l3~u78pRI*9OqFxq$wBOW1>=Te=M6c_^QZ z3}fn0G{@w<3do2zJF)456Rx}9j9i(-9Qvkc`eL0&0k3Cl-ek#I*Y7>=tY!^fXBQUM zmsiv0SC5E@vcza>_jl)M^^?R|b)U`|FWDcOQQm1*S1CS@-&z@T9Gcw6#SQ;<6(G_G zBCPT zmE?+V82+e0#@25-{7M{T9oG5=w$AQpHS9}7+uNl_dKcID*KSh8dLMsz-R!m5clBMb z^%40icMtz@k|$5_BW7HmJ&paPsxCe@sz@}yF?TS(ybx9l7#9P5g7-tI0hsnLdoDHV zj&+aQ!nSe)J8p(pDb!v)XDfbaYPJrr8fACP^q(Zj*~#PP83RN><5gR8Sf`m-^+;3Fe7qrQR>IH_b)?o{2tgWJqZ$K9xilis>LREh1Xr}jro1DmiYYe~++*pB-Vm4`fuIp%X{nhne2#e? zNBk*%Oejnvzw5P=3>c?)p2F9J{@|DHvelpjAFj&htJ7shs0LQD7xBbBSblW81y0~f%6W_kCC(2tjDG_=736pJ9yB+n zk@DE{QogAv|0$;|M@km&c0T$LMSN34FDSl_FzT0_re>F62_r+!cSJM!sT)P-2tSM9 z@rgeOW71<&HCR?E@X$l?So`-_y1fV()yRxcsispT%ptE+J|ltz@4EwxP@};G&w>ow&aWm|YnbZ|PpVFqi=Smy~H) z&T>>%yEzy;2-z3g`#F%*lC4>N@05PEKkdvB-z{DOd)?v#NVa%?Fw8)K{UfX$ryEe4v25Xzyws@Yt(fAL% zn&zpfj4(I)YJoJg$z7Kim_!(nDv)2Jky`l~5|Ok&HuUQK{1qaZ;(8S2AqDoE#Vui8 zMt2F*7kDCL`OiQEr?kv#(00Yq`vMn16>o_clysYn$dG2P4`^9vuZ}0J1-GkObgki- zQ4tE&&TX9E*anIw2n+BK?wr=$Uv^?hQl@het*gPZ1W}3>vyif^PJbx|L_v;8Zii!? z=|Bc8h_oU#FF(8_(rxa4Ng0KQYUBbX>OY-u*&M3CV0+lbjCgczyo0lU0pn!aVCAEc zuCZHD)O9o0b$f|+u7TXTcsc?#DWxQ=2-#;Hpl%UO`iA&2okz!XoVsV)^`#?XMW+tKQ@LUf>F7HxQ8pgmnH&d12dW;iO;ww8qFw}b zocm*TbPOmnkv4QGO2>|~ykwYRc~zv-L3vC1GRD+Z3nD5I;1bJe8BS_-+$(TlN~F3Q zMe82L#Yo8FZHNJn!?73#(s4G2Mm%WS*(f)sd6&7f0SDrZ2McA_Q~pz6ryNGP;UYV^ z*bTZO`QQf+bGb@c9 zH?#_x-PW8@GVu(hUl_mv64DhNUm*tn?s5PG=eN4mh>fzF&&X$h&PClp2}$(1fi!i7 zQISd|#&EeqxTa3S3J#*n=3X}!#uJ!(6=@aBetiv zhs8NI7)VDU0Mg<;!NST+MM)_KtSjB3EVM;zXiNg_>_`=3Tg-;kP^y+V74Si866JEs2NzAxxo)`*?F!A; zW>jGve6GjQPG;sdhtU5sJ$EWqaaV04+b`)c2EgkS6_tSxN#GRo^r7F%$lDZaI88#d zX0Z0BPTe8^uCX9o&Urj)Fz$bEz=s@rE^Prw4(+-xA;;>dqr|BsddJz)TM2-7FW<^E z06AuYePQG>hR1(R&q#eSa_7CId>+$m?o zK)#Xb^(J8K(ti9}F=$NAk4efj0x)jU%U+CO4GlGV_RX3jz^2x)Og}Gr(=pLk)feL+n~IRL2DcxfDFlzU;LLR417 zv5==b`SKfu*D3tz-)-o*-?)_eTmMhFbW5ZNv?yuq^(HA;RqWG1RGN8z3TAy%@0Z_? zO>=I0!iy;Q3qx}huyP47r>j4K8+)qP!Zx>B$u|WB< z(~_#~P@gm{lz6@qkj8G{;m|XR42>#oZ>?Q_7s$%@PfXSCsj%SSFQuIBc+sV+1yaaW z!tQ637s)Z#*Y!*NXRD|m?_~mS>syrt0C>>`dIjz3BKUa)>`yW@t=)>FO9Q#haLFCglboRHV z>7TcFd(Zjbaez`uRXe6T71M;bGimX z`5uu8Bfp3M6eO2s47+)bA=j{qwcP4G5=kI6sJ}E)7I-)4Y3Z6Rktl&y^#2o(=8&Qi z0Qo|{5NRYK7Fy~N3WVFD(nt)#XH`b%uzW}l=MDgX<0rpx-{a#TXDKoJjLsx3>NQX^ z{P_S2?o7kIVlQnH5)hhQmvZ>^4I^idh4Y=8s2OrM6i8+FFi5c7ZIS$H&&I^?fwWA6 zQ#)Oh0m<@6>3xsN3JaxTv_i4lTAE%`)K5$;q!)nwge||(X;Q&3q%}*kuylqM?U|DDSlw6V@20UQ)sV2O|8H^ zfwJc%>TAo7j_0$wlolXC7&edVtASM^X^Eubx}wE^G_XF!5poS80#&x=@J~qNSFP3m zt^(;+I6nAY(~R+ZpfySeh7(vg0xxd?76j)i@#jW zf`wL$jMswBY?T77Iz#ch(lb{DwD z!!nwp4-SZhJ%-$zmwmoiJ-%3Z?R{hb6#Uk8=f8q!Jxgu#g}YYhmlJ4=-48kk>WD?F zu&c!GaaS4PVpK}%oUPBzUZe!j*lo&QK%T8S;%d*5*ID|^G@swJ7dW@q1M(cs8VbtD zlYx=O=3nPf#N)KK+kdJ-7w=tjZcZ)g*y9>h0&7G+AfgMz12Kwz;6fEFGE`Kwu1tZJ z)bn$5YqiEhLFmU(cGHvOZGJ;groVX`3;w;IzGmN9JP5Fg^P`K+H&9K5QFZ`9F`XF< z&pf=@0t&(wd-e=`)WIwJUb5@r*=2M$R&^fAdZcGBsLzQ6%WhQ$pSLP1iW5KoxuEM( zlwd*iW3J1fE}*drqT68mLDjB5-A+aXFTt$rl*0f>3^#Spuz6S$v z;k@^J%-t89#p!-;wFT{3y&?ANDm-Ymhwu?4tv2rMkb?~qpcQ%_OI%LMs&%#`$I@GN z7V<$^HKIq?nS4Byl;HVCBRSLQANEr!h@WwXt4j1l!18$zs@tv`R!(|&cH&t4YY3*a zNk)s&y@XeJr^g|LPTKe+83|Y~%98IfhFlMWX0)xT_4mX#AA})rbstls(kIE5&IzMQ zhd0bB_QtOwR7B#V+*BjuX^?)Tul_E4ASK(ZsI1nh&sJk-(XV#_e|XnB1baq}&`nlo zYWDTCE~ugb)quE#*Lqoi!TYHM57FMDlC5)hQ~Ld@tnHq>$U~duMK8Aby@#z+q^DFnh=xa2u>gn5v z^CD3O+WPnv?Y@)dEm976j7fp5hBmD{U%4!FIB zS7Op-i3cG-M&PG3G^dDtv#DKzFt2SEaZ|4PeKXAu=96{IgU{XRwHq{%#hux`Qgy?Q zb~Me;C6Ur){5$8{=*cqenPz!02?J360e7txhK23we*tI4*Bu~yYTUf8Kzo<>lhxG@ z$-(?_7vVkLPtY<4&Vu?LGZmnNudSdkL^Cs1Sl&h0i|J4}TMA*a3|b?er760EbB5yL zfnUXTC`7GNonHC|s&N>#e!jPP&(W%a;}z>9okPWsr}9&yqom>xGhNH6nnU;^6kI)9 zwk@7KWx7lAWE0A-h(@-? z?_)f8y7l=AxqcaO9fn*TC2-68;3wuqRj?GV%@FM$J~2fL@QIf*6%Ii06Wiri2>Pm~ zQh>in-QxftiZCPaU-6m(k#J!^N5b^n+bEZc19!(>8nA)kDo$mH@0 zAS%#e$adc&SWbSR+-{D>^^Zo~75rQz0bNGT%TSqR2sC65f2I*cblftukXA@yGtHJ_ z3k6fm@G!Me5YUf{2v-BR>dazlkPJT!o{Y2gG?cA_E^BYKquV?1MQj+s<92nIQh`Ud zyt75H7(;ixb$e;AnPDcJH2-%d!V1I=?==maMIl@uQm)e!+2u!!O)T^yZQ?A})Kywl z!ruCZ5YB@QwQTopr&Ul258%2}KmW`GticqXPg2H4wrA_gV7a*uNAGH8pk+zf<+!;zL ziSEwj=o&CH0HJPurQvNFre9}62r%tm5$azVy$1AUsuA}OzI=MdpVh9YN$>Mj#nxYGp?GfJ&^9C{gzFgW{PR2f5)viBNvL=?zU8E?bk@>5&C322U|pD z-u>w?y8JKXE8lT^lsbhZq3_`Bfq@*xj$5h*oT$U%Y~o}XOh?7v#-GH3_Ylq;p{#iR zI{>CzqEov0r(0NN8%(i@>~h%dAfs*Xa6k3QPtTd5;fb%?%pea!yDBF)Xusx95A2t$ zOzICgu(1syMVXE7J(l@?m)q@R|H{?gzAUBH3FfqOd^FI+!fl}}C)a{$Iy%Y14I(_x zgAgZM(}yJ04?!D_2MX?|*sq_p)~ITLf>QEp)eb;YO6Ln$>$2$|Es?gh)L7a}Q11Rx zRcUgIA`XvSUHO*ncc_P8(#g&>s+`+(l`q~s*|@aQeg5W65HG8YI&>7}-(uoRe?u#J z{zjD*qCbbhZwPPKLYsek6&>RGyiPo+l#VaP&7G#8ytspftRri9wKZF+5^vJ!(+4q& zJEuzEIixAxj5WTBslJnJ2S#$7__*x5+)h{->094fL`U{!+R*u02r;h3t9Nf_x84pc zTG^akMcvP3LQ@cEYEB|6$|mivE!DT&*IJ#W{x@#jtHr{obJ<5udrjv7f{|xzK;)jO zsc9s%I(@*%N^5n8i^Kio*^}7gh3K((k}*P-%hV>lEy$z5fVQ8BXM3~pqEeA+6K;hk z0ONl<7WF^SQ_I101LiZ5KtUtGK}v`Gwi(a;e}hj6Y-Wb*SAnj3a9gy_jiqntRhW)< z+L7iq^6}oj1kpST`7SZfx*mGL$v9uwf)fyhugym{8ELO%x2a#py-W1*=paiX##9=q zFQsCys;>O~l2=-_?+4#{mD>kkU<4$09!T8?9b}7H;Q|urWy@)*Awm}?$J+Ih2k!4$ z5gCb6{-GaWGAkTh8Nui$KL$lPRL>1#-$sO+9wi4l{3y0eEZ#Z-idT(G6)+_+g_{W& z_+jB8)Yzt-Qckq~3V3H-rE5{0jnIDk3JfviI%k&BXK!v07?YJ@HJjOgKq%L3z2u@d5RB(%e;Z-hL%+`L*JzZTC#J4hsWi zy1lUvvY$DU?X3?6dEC^h4g5*G^|{vN9QRw4|AD2&)$e5ttVf^VD+<_-V33v&!*b#s<LcPoi>3vIB zy^K-g(z!`g3$e-Htu$hhe1yAgsDKHewJu418H-**5-ETw8eQ&cRKfxr6l?E*Mz=>F zX?7kR(|f=Di!1emRFI@VSnGL8s_qU~LhKC&rh|*CsXwVD0)T3JRR`s@jN7!fe~+Y- zv*6Z+V8G-Ch+>I??o!B3!fNvU60F_LDFr|y2ZGoQtJoR0okD0k%47ke-?6=)Z}Cez zG^E*(&8$VmSLd%T{G4j-#g;T0i^rR++&TfEVi_;uIRFk zNk%G{p7DhD+^mTosfhWZ<2%rt1>d`-L?C2@{Qw`26_q~z-$dYUwp>Hj->EfF`o3yA^Y7@=MS%g4OW!=oa+Zr|~|eFuhtd2YGsfC@D*Fkp;)+1=YoMJ^^P z_D)pn_MJ1UnREZ~93el5{Xj%GK8yNm7N&?x77*1^T*B5Dk6Mi==!^DOF&UheCI)u< z-sucX$KBrkN*HO7mIe`ExpLEjAUity#;lCp>se|OEoNZ8DuVGcr_TG+eXA`6P$Z|@ zlJUXPj5@c26{6FvLV+L152R7+KPp*eI$QC{W7>8uQXkG7qijI)S_f#U!1rBc97fOC z(RBxh`!J`#F`q!(S~=+f?zIw^nJ6f#-01XY-o2m%s!1O@?jPEkn%mxGW?DYCNr;Ki z?g!dRoX0j+oz63sy(^Eu7rdMwvRq*sGCNv!XlB=~d=5pCFp$&Tn?=~xBa4E7pbN;?n&(yYN zW6&}yBsqBfJJ}+weAaN1<@L^Y2^+iC`8k%oE#a>8fT-m&iDvSLy6B^|U5<|m3SFyS zj#`%aLOd%8SFg=52ipx3c1xM=6vpoAm`xJG;J!|VoRM(rQ)Eti*8(bQd2Z|V)#6@k z28dkigDf;?mxPuJq0t8pdGoK_B@CV30 z(e-t~>P#pRD35;;^l(v?;cG;{=fnR%^f^)3e19(kAaXugEukyG8DNnLoA1=_M>7BkAT;fU+u#+uGW#LuFT2y8tT-XtEzY z-#h+pB%tkn7++f24VEut{FP&!I}Gi8m+O~Sfb+YDMRu@z-UXhqg3P5yv+zfcp%v&y zar2My2&y(Sm_E=98Dz$;E^k7T9)l~Gv@S5bgsWWE8`EqPm^RMAew>`pje@1+rHY;D ztM;j}F77WgD$@cVBqUwF?EVZ!S;?h%{(>79#n+1bh9f{%RKqXd`_}NH6LUelAm{SJ zzfZ*D=EYND)D?VagP0g(296>=Pc@Py2iEl2s7QekN(l70RQW6m`^ERZ82j+uiJti{ zG}7^q!v;J=@E%+iWoB+VY0Uq;b^1aGM2wk#I7$+PuIAr;W7eDJqgB_S1Abp|tl#bA zh!x7uF|PQ99cbslR5-(0i1XmYIOux2<_c*79E z16iN~pobO@%WQ12f~5u{G@;@kqb)e8Y1}+=w`&y!(uhrC_&L>pZ*A1R4|-P>(CZ_w zf<*a!!%&i!RPF0Gm}r#{B(*>Fi?vz(kMnLw46VdCuahJ09 zw>#mp4Cu>(eCddAdG7M3$0Iv8Yz3(kBQC5eL}PN1-3S&C@R8QR z2$VXFRmX!a4pxO83KG6RrGHE_WCw*noyAB=pOtI$+IW67g?r1S+-J)5k4f$5 zN#w~d?zW}wK>@7i*75L~NBn{5<#Q?27}iCORx^9<^F4xT-#heoCND2DS*NW6JMfxm zb4I_sj$0JRLfI~imqwRNU2ZTPOnqy*brml{YV)S{`6kKH`Q@;Qv^3MK!Zv^Kq}x&$6%`fa!WnxaxGqxJ z!fEk6I^lJzVToAa{+Y=b%MwvWL$5g6(GV4og_J5Or(5A7Dm6mAX)!DjcMU+JGA@>X z#cBGGy*b}S5`{VAm8-d^Pa$h3_N8%ldzc@vHNe*v4QyA&psX4yvQ`}j1oRyerUElO@3d~bQbO3HQ_%g(bhCs$lF3xA=`r)kRNik2LC!b6Vkyzb+f#cJ zt6H+1U7Z2aA1t;vRLJA`ELy!vjI_=#mh_F*H>_7z%Gdsx%<_=yI(kNqt1HL#DyWi` zQRqVu&ilKjFt)VbQhpH*7qdDuIP$*GzPOo65Uvpk-7ZFMKGF35mvA8mN}4zu-=cjG zQzQ~nxKVF(dMApA+n!W!Lrw5ou3WGG7%z(!%a=hDlxfB}x%ost{sU3r_p5s#Ioc-g z>xcCHg-p_3I&WO6m)F*lr*DGjwQw2^n6ZMf&4Zmp3w!j|Rp*0wZWJ~4(lCcJZG`Vr>E88TKH8(*Ddnbap)6E0v{4Q>HC*M@VUC6(k*8s#@?H^pp-z?MXIt|)EFfnJN zQ*AbTXM`SGspPI$hV|;rj(H%T#TkK?NJULuQo^PX8ajEok-VvA+}_0>Bj^`7{;8DsUXk{fA?Yfh8=wJOPa?y{<#Yvj1V(#sH zKhGhJ^t)&&>oLhyLVKc@&jj9^SdJuDDLoWOgsvxl>3E__?&o5&n2P?Cd7dFYv=W)@ za2HtCXDAI-R@G8(Z6QPA0?$~Kz{|A@dea8cl*sKmhp*s*zYgl}H}1AAt+PW^InbKp zQ%a1U@E2y2xz2Vr~dI5fKTA#XzY^e1fJ+D@{7C z>oBJ$I|M%>e?&1jF)=Ru-TiZekR>v@^yaZ9`99n^TJJf4He>a+2uFvjd)Uy~QU{GFYR9kNb*S{9m$W$C@Y zj^}3MeNK1zE1@dS?XDuJFB}VbO+O~#5hiF<#ta`YY6{Hizs`?N;0LaBE`;cGd()#&IRwJZr?BL zV&LSYUb(tFtE^mGJDs-@xuso)v%-7FZA0_U9k1EmtAa{RnERnx8}rZM57|Ym1JW^E zDJ#|C$N#FW(qYAUV)n!g5_({5py~v`pjrQ$a^dnGCTX2}SGrl$v|*2WyKYe`lx|}r zFzi522vPsrJCRIr%Fs~%;M}c>ko~&mGAqn4f_&ZgKU7Y-{6NeXB?kU7XSb=&&Tkld zcpXgf7IKEWdO1H_yZW>C-aGbGQ85^=^U>ZghMuA9rI4<`TTJPm1D_na930^To5PKZ ztw9Av#q5O{ByvNfCkOVS>;}kdvM@O9?dNA|0GQNOg@?-Y3=EObD4xR1BXt!MwK{JV zMM|LmROBP($*6w+w#Q_3rYUQ5H)z7CLqt$3jl@`mhkCkngVPk&Jk{0Z4kx0bUL<4r zs8G_ZQBVt^q4J;>w#?_-1w}<2&L68Vm}c9wX&lN(rHvYM5J$YDPYey;Eg#(}Iagv9 z`st(Tg1v)?=W|%9pPgCl{Z*~gvr8L9cH+Dvnik$H_kEAdc{*dZS_+f=+3QbrjG=4u zoX*q5Z0rn|xs@&*(iAv*=g5X$e%^6af7C>s=<6f}LqqR2O~+_5KNtJOROEHX@X5|r zTVMM`HX?c5^btf|WZ%6l1ZGpEwC6iRUfv;&Ps&U;F-3GZw{W#ZGuAoSU0-I?2zrQQ z2D2uw{d&wV9Q5>IR$_td*8*9Pk-Y0Kw0#a_s?HUj`H6CMh*;&hvvcDvBWD@M=EYW- zXn1htm*u-pZoq?^ zRluF^b|K_;%$x1q*eFaE)b`me604&xr>3i)O7{!cfp zi5~!M{d$pm>A^Wen0r1cSI?auA~Gh1r3rVq77zHV4CBRpxQJLQ&5PE6sZ#rz%NMey zBblpxd{xu3Lk!-vm=Uk3xVgD$cw%sL+)7oTolSx88zx#o-Tk8dF%;Y`}@H-zN)4&pmcR-2Fr`8L|>G&4jFdScy65;`5WITsor^?ikf-NP$Bo}Q@LGSb9f#; z-jLV>bFRcb76i-+0i)3l^7f{Q$aFg7dAGo{|Iwf}Py1jZH$^J*1s~aNeL{R1BMs`y z>Oe`Y&(EuJmlBS;qc3z6T~@|18MWIuD~bL%97aMr)F#{`cv4c# zmW4UuC-(F@1o`@S%kO!6-tjpnbyZ5ObOn}0X2&L-9nZ`_7RhlMQy@)TalipvJ=$W8 zWWNcx16o%PbJaeP5XCCGGEcTGd);=cduCKn&b4m8v+?f!8@JCaK8LE=FQ{H;Dr`n- zPEDwAt;dDmaNKx~bpAc%WsB_7o2uA^V>ygMbCD4p`VMQu(Kt3sa{|6>Ml#PB85qFp z6yvE6W=%#$UHUC4*IgOZ($N=9_@UKHzKNw+Xq<|BrIcl3=E6*^KAwxv$R_Go4p4E^ zuI>&#mcyrytwkLnA4otKhey0#j5i7+eh^B@N*$gY;1}dcnUuuw+Y7_8J&?$pDCW=t zAF&ks-H})vn}ao-eWBn9Rn-bB4MGP3V2z*?5{6 zw*_hZf%x&(jEaJSKk+-dA(8zu%ed*pRZjGH-%AU1O@4lc0kAsz`#2`Y^+aIsyWjFT zA${=hAz@$Q6gmG$V+-b9n1GV^u}0lf-B&9W!EXqVVE$ zDU}MOen(CWy&0mFdQ=}HV2c$m;|OH||< zhZP1=x_Ze~8kTcigdjsCUZ76sqRB;LpP{CPaM{wPO^lk_u$nL00zphbB&VSf7ZYQ% z-dF{4@F@&Dfh62A(>F9UGfGU1a$G%;e&RpURt2@tl#?doj*Tq$3|_IR<^DP5 zV!v|Uhm+@wTK-~#*!AZ`m1JB|)M?AgLMJ*AEvKc08|l4_gvzDBFSQ_`*Bw45WOsB|v+rb6RMyY0kS6?8ct)$8{QFs$uKbnyaI=^3MR zeR^Q`s5#PXKDy6(eTcdFtEC=gnP*zE07P^;)HW z@hPQ87IYAFW$EFE-CH7QT-Zp6; zSpM~4Wtgbs6j?FTwmDHb-?%P9f7ja^o_mHE?SZzov`Ri>`_lf=G`*8qW@dQU%hq*t zl%V6Pl87kw7Z;nqe;@{i%SgTmt?6o>nTnL8BnM|%wZpF5#J48#z&GwlI-jO0=k3m4 z7-6Yybae}XVV8$6Z}LkP?K3=K9*3RhlkApfbD8Zw1{P^vUP}LJxRxrqKE7Vu1#=XL zc}j2V(|X40V*Y}i{fU2CW~T8#>3TT1Q9`X<&-lC7H8DTFB@Gm@6S^E*E6XX3^bc=s zt(9)pheX@1N&nS z%_>{8&K<5AzguaKDpkl=6$qJY9+72dWb}Q0#lgWzT4RrJ-&;FUwG}l0CV=xooEiGt z_v0hXPcI|$6SOMGY8|%t3l~mDa1~}Hh7N4BL#7$bq3bM?G{Ayql)AUqLHg^qiRDLU z|48Pc{^1W2GLy%sGSGzV z+h%WV^E${YDJjUyZ;ZF>w`Y|^Dl^@u^z)Nk+FYN4)`uvpf+83l9gvfkw=o`rAVToU zPfl=KQlT+*$P(4fC<@H;>S<8XsL2!UO)d+t_8B*CG3;S7>eIGE9RxNsi5Gv$1-mcf zzt;Mg^AaEWw>|OTU)m?+OJABQ@iNhZI6HMR6fClXYcTkw(7Z zvtA_`6_%6zwMM&e$NRLHw@UfG<~m$m_W8c>@eX`;HML=n5ZatqC>l*mr^0sFNlVUl znOc+}y~-8B0uG56cTa`}N9#6rgwU1B+7{=%WDivNVNk2{P|>SRsTFI`V~t+D%;VtwmqBu?=u9J-6BiVuqi{!n3$o6rPqURFvWO_7ueTftJ| zA7FlEWM)1&+!wH3!in#F$_|ltH%rW7Hw2TmkqlW_&0RkHWl>SFGZ)uuqY(1*ni2YQ zWcD#=I)eQ#;^K}WBLSDW5MV=26;m%5Qn9D0O-vcvAfw0XwjE0-dEP&<~M&6eCrHd=8>H`t+fVh&+a#!Yw z1Be7F^#GUMu`^V&u+=RGsVLgGp5xq}0H zAG4xHq(>tR*;vhpzB9apt6yDpeWT+)<#7GCzy6~5?kI<0R*@hh-It$opk43y(jk zq(qQ*V)63ck!hQ*5)xD5gIjiuk9PB=r>>=Mez{nN1Cxt=S;mmy)hrJ^^wv)bw zoV9OVzF0+XUUg{&y>`&sx4l{}Ys;tUvW`AFw|Ke;KYdyA5%2TR#gl*d&|fK>K%Ik| zbg&>SGM)I?lC@$f=JGJOVnB7mnW58>yld(9c=;VA$fo63 z?iLIaE=@4<<#fQ`Y^M*Z`D(IT5xx>tc-TMkt1=uu)*YUn__2Za)Yx^iPFq8lIIN?v zh=XKhP*h5!%unji+Fs!wuK4Y(=Qw+(q;MkA*bnzRx;twxUr}%g*w2{N^vfpY5PZCx5R5`~%_@^Kcu?CY0 zpIKB=FaH$Q`j|vrz1z*%1lSrSLtL!N+$kF$J+A{MNZIS8~V#vQlBmVDlAq(SFun!~#z1OxM4{W3MfQ?W3|#SLXI->m_uZsk}O z@rGn;_&@ZtXC+(Tr{p7pj?Hg^>}H<9$&Yq?ACj47chWLX_ko;ho>Uoz@ixb=`p4L; z^xx{!Zc?`o%VwHQ+a7tprJ(TqQbm2^+phdj2`EgppC7L+DN`WN@vkP^|8;2@i03e{ zMDq?dzo+HlS`L`{-oN*2uK(15>&ZgPnOnnz6t*)T1Y5i&K~p`4j!_Kq9;~~qzpULu zM9q_u=H92wALIA;uab#3zqB(;Ny-lmjnp1+PF0CF2SAP(73x><9Bn;bDs0oTi;jr=dDXosm|_hYVWz$oNKPR z#u!taGSUA=-Q_w3cnwTP^3eT)5=cz4&X2Y5EBnVk$GtG@A$++Ddk*0bGNWTIB+_9H z`WR!#sSO0+1fadNX?mU#-7kn)GGoD`(8!ls{4~j}Fn|S;&sKA~F{0(#yMoDiWn;5z zP?%ZtJ~?vJ>3*kK^tt6hQu6y9#VNic{a=GpNFWU!Z554$fvf60$B}z-t69~gu=m^f z>1}qN%U3f1+f%iQabr^CDNKFC zDf>&h`pMWVA04 zP?jw09w$F1@ojn+o_^{QMTDNj!iL9P)EHjF72U_cJgRX$URP{x9Ax;WF9@-H|2r@| zkV>CPxEiPH^$Y5}3M|!9ZxU-aSZeFtwzTTISeH+}4Da7@rCt)VT`y+gw9t1*O8meO zy?|D`v`}!1C30ne{St{ox-7Cbrv7qr}vb#U{(ed;5n&f@LbKXAQ(2ht-qJ z5DG;31#3ftP54*YY8Y!&!%C`(`&Ue%B3T}R;+to$9k`?q z+cMXD^$`FcA`QpjAUBinsxZVLz=@U^Roj@)~Q107z+-=ifZ6Hc2MECdO(g6?oC5-ql+2p6` zfFxE=lgjW$5oF3s#jFU@739-tGhp(ST#Y5mg7m{;@z&>~de)XMkKMMfAs zlZGeWHR}(Pz98ZM+@S55l$hGHb^>(kzWUHy{=Mt4>fGW4k|5RX8^sIki)8Bg^7ZaC zvAifL;5}Ce;v(d+`^L z;_Xt+qc195ZKbrY0;xn;BcE>6$?9t}yMIkU@*k1uXX(!w8OJs-u`OquM5^-i=dhKB zq)3BDcdBeV-1hlFXQP#Eq9ZSaZ!L@PYOVFfEh7k_mOWn75oxb^U6pH;iHJMPg(OdM zUQtR9g?-?zIzM;0pP{Y`$Vx5pVr80QotO>|lGUocsOpr%Rdex;G{WwdrVYK<@w;tB zz-jI>U;+{t@`}P5HYF_G++*1FturB9(VeLU5N2W?J^Fl~?tqw>-l9^1mR_1J3ru`uT>U`(H*75Nh!(hhx0r zq@~rQ{7b^S8RF@pMJ^y^*+44ui<88ncqlezhK8)8Q_Q$Cy~IBEUABj&z;IL4Z~8M4 zV15F%Gb~jp43gAQp@uMg?UTVop*Ier-xOM$dbnvxM5o%`zw4ei^*PXBlT(sYG^h+k zs&aFx);V576%<>4v+^O21uv0zHV5!pS1vpnYz6V4g)zv<>TJi5)WwELrkQzVHCt^p zn=vEq^=rQ_P3@^R3rqtR zM=7$7nQz9!nDIuNBETU3_-Bw^1C_fbu)l@S7-t97SX+(>%srXq*)w++I_h!Zxs?D1 zTSNn_7H?W;jppO5Z`faNE;anGJ<(rR|NaLF{=Zqm|K}Huht5FvMQ56ByWmm+NnWhf zbM1+*wgrqj+#g_kU_L_dRdt8y7du3|nzXt1xQ`{uhh5di@%b;`&>bl`qp_`*XpCt5 zQ@VYI_wg^0`xe|6Udx+jh5E`Uwr=ie^vlsVc@Ls6(hSyrjF1k}106j5=Zm^HZV(;HkuxxZQN(%Ri1QebZLSMXV7JsC1_xbqw(j|X0C2KEK}Fn7vMlqq)EBxLhlwG0c(b7H>5f$$jruDp z`hjJ86c|!{R~c0v5ts)B@n<$tqsuAE#CqIJ2$MZ?lMX-NE*8H7Nil9^&<=oFr(ka@ z&LiLBa?G|NS}O$`DH$8-=I;BkYn6=S$HA3jDH}^#A@wl;Cgw6U}tQdiidaKP{dHX zt=6jm{xC3d5G zyrrX)Qfy_ZZVvt-;9+l;Zs}mLQQz};O{iwu{be8$^_NDZ{pLfES;z3&I_+Ge*qxgt znvC3Uh|mB+2qNjFHD7ahKUEN>Z3wc~5(x;~)VuT(mAo;41_#99%;kmL&Gx&a&A-kH zpaEmpj}uoxncalw{`@hbW1y>b2iy5%W%hpBDR$|RYSoW|o1)@kKKJyBk(GKQWd`RY z2ACz8=dogTBC8OgR)kkCc5|e>CJ#xD!!AE1Ce;d7@ZHJSe#om^#ABTBtP{-%m zysQ@(i(FHPk(id#KZPgGat(d_?b6_mL``Z6Ihd~~Eb%8~tvV^uQ4=X+(ScF%(aOMd zm|1SxhK1I*L3V{JLF>1JcfUNa{xNZjwHPW0T!dfSRJC$>&`MMcF83SKBWkIS&}b+1 zWf^0it6V?sAmGE9);gNaMNxvmQadK5?=!8biU*5Wl~`wKYNE9wY@0pPTl$+WPX=@- z%^OcAVxi3Te>AC?&0k~BHP{Y#Y5B`@XQ6+BAl>$lhfpT=O=u|GjMTMUKQvpW0k6_8 zvkmj=Zx39!bryZg)@r_xk@ zA`1%>fdd}LD-)^HfK%NntHsOx-2oJ5nAA3NA~aefvSaN8M0j5aeAs6|Ccn_++igeY zQVhSQhSpXo=iHI?71u>$p^1FUpY7?EjFAG%#21AN|MidcAD5F#ENml-56e177yzva z@55!T=BID{?Mo*}>dcmFIY_m_^s;wH?ZDEeG`L9FlV{R0m$P!Plfsh*#?RaNJ|b^jxL z;LI-1rNfhLjB!eF(yq#JHO@x(WiNK9>R7G|xA1FW1>VZ)adyfWQ0;p#9)2>qG<=4L z#9I|HD5vx0QglQk5keS<*Z#O^%k3rj2uYL6={51!8|akOoEQN|nf)wI?!-qFv#j*8 z^xd+z#Iinwa<>E;j!(;OiGLd87c?aUQG?xnds=rH%>3wN#r`GJ-;X5Dq1;igat2#O znv7F6%W2cr?%KUY>bDA-(gGv1b!I`%f$Qd18Ra;4R#-Ew2Ft+jiiNRq>UUM|SQS}% zE|Vzwn}fubFy$Bh%(V^sD!cu$H8u}TjPweM^2dfD9W~dD1qj#f541;n=(>M)&M){M z46SCq$_dzd&%8?WfL;*InP*mH23umdjUs4pzQ$TtjFVNJ9BPRV&XiDy-t-(=EP-T8 z99)6cge`k9|5*nMT&O?yRJIxno*ovvQI^LhC96yCbH_saD5=s;&^Tsyl zwBY~XgQ`Bq++VXs_mgX|n?q$ou)?S`T8_35P_82}4UN7p)-F67wUZ#0^8$WvOAaR# zCwIqdmg@NUzZHgy>)=-p(NZG25Mh46I%m6a{I*U#D&>rhAr^V~&f_ACQUu;P?S ziwNAf>F6?46~;Sv9@WA|2zFlIY(YdB*|ep44xmcIO?+@<(%C#y^Mz*G) zE%5C|tN0w4^szB@U0sCEe797Z68#X!P61{72pDJ_xWi-e-sgAZ=@+jrAJt`~6qFS1 zXptr>)VPGRtr1KQU+A>qEEw`idjvUORK3d&oA>?@R67yN|GGQfvq2syR`x_?^aYg! zWK}dat$ANl@t4q4o7oi_4BPF=vbbtsk03%xB=C*cNAnebd!KCLp1gc9W$n!%?tm?1 zt@CoKM1182c*A@rvG^55@8h(k1D6gEI<3e|sZU5gdGF|be{_OxP5T9!x!orq>TLYG zLO(-~{CI~9kRj~KBA-P5JjEd98l*!P-x3ZfRecjGq;*G*JSdlfBZ z16m$amSS`gz$uBCr+krkBNFgv;B|%YLltdX@p9O}X;1@Rn%LopRQ)a0KkM$#SDyhS zQRqmtLGF#wJ1(Cd9GQ`AtW~vx+6HOqB>MN|KYj;x_2CAAtUXG8G_-(-XzoCq{M3A` z%Kgybdg1sq&GZ`b^F$s`nBK1BF_5CGur&yNvJecc*NtAzSMfz%`m+VBtf&V%_UG&} za$eCM5hcY9At<;-aYfQ{x{C686{=cp=W!SL6YJUWpv8t8I3NFrsfn?;3mbbOL^Fv7 zytwD$w1!ur?YM+#Kv=F!n38;(^RWOPbY-PURNu>Aq|NVT)}ZYL$xF_MQ&vxE8{HfDAoRK0Xd zmi&P-ER07~r5s2RnW1H(OX7S434<#qM~Hu~Z&zG#!&eUiP2m||RPx&jzjJNh+ebHB zNjoEX0o|6lwKL~?E8e&6u&toUEuMZ6YcX*k(+`In0!T%-+ERSH{6ZO_7$5g|D}*UtT^2fu=r$_ys$K$76iUm?NiuaJ=TVFYw=b7&n2 zd)9wkS6ly@b0Z+V@17Ep0htAI1+FkYW7XNg%tJo*#V)_Ti83Z(ioJVu!y=)@H*)ws zo&G3OWw)jfPy@+h{e5(7d~7t>Y z;S-NNT2%Nt(k_i*s~I~dA6Vns?Ol4Ovei;%bXfgCG72$i(=Vj}kQS4bAxX1Hfm%V{ z5n)zvb>(h)RtdGCB~7k3AcYeAOc_23t(l5fD|q3#@|niZsqq) z4fAu*;w1{meJ>Ai#@E7;7HIiZ#!l>j=P|Q=Li3t4J^^pmvS=^Mp7VOvH0a3^mb*zSE2>qyIRZlRSYj8GR!f!1I+L7MxMMphkw_OOdLY#}x+*sAVK`JOO>3bwAjc#Eh z^Wn6&nVtR(Jp4QL#kq~?v;gbF@oNr!4Lc+B3sMU##aPAK!CB&@b?Fb$zvnsjh+fim zG?)aJ=E&)vMPZOle=f}`E~z~1X`P{|>3ncfCIG&$VGc~*7a@I69yd3`@s~2&%q|TB z7V>kzTa7bZ;`=O9tZLkr(c3xae{Fvb{@VUDJq3*I+ZKUfgy7;N&=h#QLVj;m!C~x!^n3`Nm@VNnMRZHL&)E)8^vak!7HqbRq>e z{$;K=!=-orl_uh7Xj$$T&eYV+k&@Go(Q z1J=1FM4&iz8&BA{=Xo1`G!$4@wtr`V1Y}x9$Use_${dga$R8ys1 zu(oU60qzfnFeO|f@H-Ei#aGu-4p&dBCVhVN&P6P($Pr3~vA`glMLcMM7 z!Ho53fT#}XgLU)h?#n6w2-3#xONI*H;`9#5dn1%(^s-nQ>)qzFXOuvR%dz9_O2bb) zs-!~=qO1iooTR6&el6Djsnhym^!iA(tGFkXb=rCGsFyAxoYmP~mFDl2mJ z;%llC&%H2Zq6s~Gy zZ|qD)Km-Cw%cwr12q>?_mBLmU)Sv5TKg0p{=8ujZuFE4;y|w-74fl_=9c}$-1C;O_ ztw#%M$@P6FG^AKQ*iOZwQtal`ocyh?j`Zj5hWD{$$U)0a^OB|0hd33hi_{c_NzS{I zE>L+aOAom|$eyR$(P?w5C))6JMq66hV_a?!C-Hh;TD6yoZ^$3~S&q# zg45?)S8r05mR16U2|Ov1g<6_wujpG_9Qh9JHR$rb2&f4++MdPT_o!aslWL26TyCxR zAU-eAxVdEz3~Y!}3*qb7_m?p$<4fk}C+?&_?hndlr{_@H3EovFyCfhG8JRGjl2>dy zYs-x<3GhYiE`?4Gnm(%@-#d=`d3NhJE__$hQPGp0Y;H7w>Dk|i+B)9&Yq5oDaQHhF z1!Vg@%i*7_`_AiNv!rUrF|*P_rs_$nX_X<^@>yg~KF>8w2prA5=(a#VI5ft>XwB_Z zqjaPjHF5}-G8cdOQ0!e{7Cr3o!MNmmA!J};CC9Yej9xSspIo{W!^Pv){m*1{VtJH> z(gj)gaB3c%lHw!gQ^}+EUj;i88>^DkWUQ++=&(%a1z!vAiFDgCQh+H~)(+&>;oVgA zSy0RtR1#iqD5o7hH)gBoX}gIKFv^_6dDPq*mn+heQNuZlo8hcE z{%J9E&Mg(HV0lk_gZ#LBdkhS9(`x3M#|JjOfgRZQrMANMcah$|g3p32S-6C9osN00 z!9Wzxj2Cv{3@UwzuJdL+_p<{`7p+?1He^avYv3wJf2 z;?-^?6&1@7*OwMf&4sDRyMrFSL4?o+$M}7h?#)d*6`V&YIl6>Pt-&LqVR-ciDN+R5 zNk%cJc4mds9#rmT#xn9W)mo8>*mi4DyN!{fkM-g_5WuJ(sqYH^LdOHI@ly6-+gA1} zLk;J8=bl!0-R&ERS@&ta^BmN2p&F_TMq3+d@!IdyJtO;+T^k-{sob_$wytJXUgV|x zFqkSyw&8$g&}J5CPXae}p<3rOT)jN{*ieBP`*W6h;R;V{Jh36ryXe_HD2a<*e>gN?)bn+!RSJ zB}E|wpKbSI9L~%}X&~jtQT@Sgw^&@886@jt zor3m26t>x<*O*)2=N+6hKEG73Z`3z!W(WSkT04ZE2O&@iyI$%20|WYMfQ zyQ1&+OfawKVtRH)&Rl0hln+TYGdrn3E;79|vxGfo^~_%9CnCLZYnJHZ?73{=vqPW! z)Y-SAV_-DEm{h)$BF~rcnE`y1S84$0fTBgiL>svN%;e+O0!+a`)4gH9YumQoj$?tx z&2LNz>LvoGbA;-|R`-6U4oj0t`OfGz&#t7fUBbmVotIG<*DFH_5)~yNEYI&JJ?5} z6$VkfV(3T1FtAGd1u)CkH)p*=6@yOi(5<9p$j2RHBP{n13mr$T8l;O0kX{?InhA|} zdiRgX_34{sWsA*ZWgi_+vSqO>e31y=O`5#qvb~8b{yJw-9f70T8+Gy2lIi2~e~-a` zqvgo^>Su1h6LyrQl5Sta_EeSvgbuZ0k`(~rf4$mRii&`mQkAr^``v=m&W8-9N%|yR z`2+z|s{!SE%seT$yB5iqgcSp0AX2Q=7|ieB-e)!)DsYFK+7}?nVMBn{DR9*pMM`m} z*$fFZkmoM*tE&-vbFt*hXB&uVsHflOB$lEdu?(`QOm}CHKO9xKTF;eN7Sx)YLs~9= zZDzC9mvEV}%KOf%lkD~)Lob6Q1n+gtob`rAHO(>_(Baa>s^}Hq29ts%f z8!IGYSRD((yaz|R!6y=Re)a8H?-4Bg#yWpd_;hW7@D^1xp)kAN5iu7HF3Ljx@>y6j zyP8CfITz@InfOqS7#VG2Ho&=1%%5+aEX%K%P0z6Fsz)-(~F5UK>T~&0gl+D)hBRu02xQlPYAgidtjzdN= z_kJ$9MGnB#tvqsL^6r~7s9KV^e8mobu0LQE&zk@nAfd|-q6o0!8m%(tUwIel!g=+m zEt2End-eq+b!O1xNwK-^$>u60>2@iL43;XsdiM1lzXsJWFSl1Qk#6T4l$7O)_>(r9WtIFLCJ z90W+eZL;Gb?mU`^7+$q5z)z^TPH3#aXXB*%!`;89ZKt}tlh}?)Cfw5wIjb_9a02q! z@uh&~x*rVWK*zF*x0y^1a9LX;o_OlD8QMT{odYpXh>wdwyFY}j6Hdr1kkRsmsZf&| z-T{G+?Ovp{-o89L(B5?Chgse)e>QTBx*8oTJNF@3stre_eC)Ym8SbW-A&Q|5G5fXb zeMi7B-=_Zu_%0AI_6b)6(mccPHbq|T;5m$_=U<`5pHyG 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Πt5Q%-iV2Z$OA2QCr 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