Task — engineering-spec@1

Effort tiering - advisory judgment metadata on skill_chain steps

doneTASK-IMP-115
module improvement · class product · priority p3 · created 2026-07-17 · shipped null
depends on none · blocks none

TASK-IMP-115: Effort tiering - advisory judgment metadata

Summary

Every workflow step runs at whatever the host gives it. Nothing says which steps deserve expensive reasoning (task-audit's judgment half, spike options) and which are near-mechanical (backlog-mutate, coverage-scope - already scripts, correctly). Annotate each skill_chain step with judgment: high | medium | mechanical as ADVISORY metadata a host may use to route. No model strings, ever.

Problem

CyberOS is host-agnostic and gives a host no information to route with. The article's numbers are the argument: the same outcome costs $2.56/day or $34/day depending on which model reads the quiet ticks. This run's two spend cutoffs are the same failure with a different face.

The constraint is equally clear: a claude-fable-5 literal in a skill is a rule that expires. The payload cannot name models, prices, or effort levels - those are the host's facts, accurate the day they are written and wrong soon after.

Proposed Solution

One optional field per skill_chain step: judgment: high | medium | mechanical. mechanical means a deterministic executor does the work and a model is not deciding anything, wherever that executor lives. high means the step's output is a judgment the workflow depends on. A host MAY route on it; nothing in the payload reads it. That is the whole change: information, not instruction.

Alternatives Considered

Success Metrics

Scope

In scope: the judgment field on ship-tasks' skill_chain steps, its documentation, suite arms.

Out of scope / Non-Goals

Dependencies

None. Additive and optional.

Serialisation note: touches ship-tasks.md (shared with 108, 109, 113, 114) and test_workflow_evolution.py (shared with 108). Parent-serialised per §11a.

AI Authorship Disclosure

1. Description (normative)

2. Acceptance criteria

3. Edge cases

Audit

§1 - Verdict summary

Spec is 66 lines, 5 §1 clauses, 5 ACs, 5 edge cases. Adopts BUILD 3's insight while rejecting its host-specific encoding. Passes after 6 findings.

§2 - Findings (all resolved)

ISS-001 - Clause 1.5 carried a MUST that no AC cited - caught by the machine floor

task-lint fired TRACE-001: the ambiguity rule (ambiguous steps are medium, not guessed high) was normative but untested. Resolved: AC 5 added with a justified verify: - no suite can decide whether a level was guessed, so the evidence is a recorded reviewer walk. The floor caught this before a human read the spec, which is exactly why TASK-IMP-084 runs it first.

ISS-002 - Model strings would expire before 1.0.0 ships

A claude-fable-5 literal in the payload is a rule with a shelf life. Resolved: §1 #1.4 forbids model strings, prices, and effort names; AC 3 asserts the negative across the payload.

ISS-003 - An advisory field could be read as instruction

A field named judgment invites a reader to route on it. Resolved: §1 #1.3 documents it as advisory and forbids the payload reading it; AC 4 verifies.

ISS-004 - Overstating a step's needs restores the expensive default

Marking everything high makes the field useless. Resolved: §1 #1.5 requires medium when genuinely ambiguous; AC 5 makes the assignment reviewable.

ISS-005 - Inferring the level from the skill name was the cheap option

It is exactly the implicit rule this run keeps finding wrong. Resolved: Alternatives records it - if it matters, write it down.

ISS-006 - mechanical could drift when a helper is replaced by a model

The field would then lie. Resolved: AC 2 asserts every mechanical step is helper-backed, which reds on drift; §3 names the case.

§3 - Resolution

All 6 concerns addressed. The machine floor (task-lint) ran FIRST and was clean before any judgment family was applied, per TASK-IMP-084. Score = 10/10.


End of TASK-IMP-115 audit.