[Spec 1280] Prompt surface: judgment not rules - #1362
Conversation
…/AGENTS.md to the blog principles (G2) CLAUDE.md 5,815 -> 1,417 words; AGENTS.md byte-identical. ALWAYS_ON 34,231 -> 29,833. Acceptance is principle conformance, not size - the numbers are reported because M0c requires deletion and relocation to be distinguishable, not because anything passes or fails on them. DELETED vs RELOCATED (M0c): of 4,398 words removed from always-on, 1,129 were RELOCATED to skills and 3,269 were DELETED outright. Authored total fell only 4,294 (153,219 -> 148,925) because relocation writes to four trees - the honest picture, and what T15 exists to expose. Relocated (P3, P4): - Runnable Worktrees, entire section -> NEW runnable-worktrees skill (926w): config block, afx dev CLI, VSCode controls, URL/cleanup semantics, 7 recipes. Needed rarely, loaded always. - Local Build Testing + directory map + tokei -> codev skill (326 -> 529w). Includes the copy-skeleton/rebuild precondition found in Phase 0. Both written to ALL FOUR skill trees (.claude, .codex, and both skeleton copies). New T17 asserts parity, scoped per the plan-gate ruling to skills this project TOUCHES - untouched drift (afx, porch) stays exempt and belongs to the architect's separate issue. Deleted (P1, P7): 'Before Starting ANY Task', 'When Stuck After 15 Minutes', 'Understand Before Coding' - judgment a frontier model already exercises, and duplicated by hot-tier lessons. Duplicated scar blocks (worktree destruction x2, afx-from-root x2, git add -A x3) each survive exactly once. CLI reference link list, responsiveness examples, cmap walkthrough, porch command list, messaging examples - all addressable by skill name. Kept: all eight scar canonicals VERBATIM and unwrapped (a first draft reflowed them across lines, which broke exact-match - canonicals must stay single-line), the generated hot-context block byte-for-byte, repo dual nature, four-tier resolution, deliver-don't-fetch, gate semantics, area policy, consultation defaults including the load-bearing -sol suffix, commit formats, never-squash. M10: NO assertions retired. spec-1273-wait-discipline-docs, governance-sweep, framework-ref-audit and template-delivery all pass unmodified. The afx skill was deliberately NOT touched - relocating messaging into it would oblige resolving its pre-existing drift and propagating stale 'tick' references to adopters. The addressing CONTRACT stayed in CLAUDE.md; it is policy, not a how-to, so P4 does not apply. Judgment call flagged in the manifest, not made silently. Also fixed a design flaw in my own Phase 0 test: it pinned ALWAYS_ON to a literal, which this project changes every phase. A test edited every phase is a test edited carelessly (M10's argument, turned on my own suite). Replaced with arithmetic invariants that hold at any surface size, plus an immutable assertion that the FROZEN baseline artifact still records 34,231. Suite: 205 files, 4,083 tests, green (rebuilt first - skeleton edits are invisible to tests until copy-skeleton reruns).
…d (G6) 2,048 -> 761 words. ALWAYS_ON(architect) 8,599 -> 2,914. Deleted (P4): afx/porch/consult command blocks and the 14-row Quick Reference. Each CLI has a skill that is the single owner of its flags, and the role doc had become a stale second copy - it still advertised 'porch approve <id> spec-approval' without the --a-human-explicitly-approved-this flag the command now requires. A second owner of command syntax is a drift generator. Deleted (P1/P7): step-by-step 'Starting a New Feature' / 'Monitoring Progress' / 'Cleanup' walkthroughs (sequenced narration of three commands - the obligations survive as contract lines), and the Release Management state diagram (aspirational, no mechanism behind it in this repo). Kept: risk-triage table with highest-factor-wins precedence, the PRFT contract for presenting decisions to the human, UX verification, all boundaries, and the afx-from-root scar canonical VERBATIM. Verified rather than assumed, per the plan's open question: architect.md carries NOTHING load-bearing for multi-architect coordination (Specs 755/786/823) - grepped for architect:<name>, sibling/multi-architect language, spawnedByArchitect and whoami, zero matches. That contract lives in CLAUDE.md. Group-pure commit: G6 only.
…(G3) 1,837 -> 849 words. SPIR builder spawn 6,364 -> 5,371. Deleted (P1/P7): the numbered Core Loop, 'What You DON'T Do in Strict Mode', the 'Getting Started' 3-step list, and the duplicated protocol summary (the protocol is inlined into the spawn prompt - restating it here was a drift-prone second copy). ALL-CAPS repetitions collapsed so each prohibition appears exactly once. Kept: mode contract, gate semantics, deliverables, thread contract, notification triggers, wait discipline, worktree path discipline, scope, flaky-test rule, and the no-hand-edit-status canonical VERBATIM. M10 - NO assertions retired. spec-1273-wait-discipline-docs.test.ts (18 assertions across both role-doc copies) passes UNMODIFIED. Three initially failed against my rewrite: - '## Waiting on external work' heading - I had renamed the section - 'never chain foreground poll loops' - a LINE WRAP split the phrase - 'queues unread until your current turn ends' - I had dropped 'current' In all three the BEHAVIOUR survived; only the strings moved. I adjusted my prose rather than the assertions: those strings encode a wait-discipline incident, preserving them cost nothing in conformance, and editing a prior spec's protection to fit new prose is exactly the silent erosion M10 exists to prevent. Third occurrence of the wrap hazard (scar canonicals in Phase 1, test assertions here): reflowing prose breaks any exact-match string that spans a wrap. Verify after rewriting; keep canonicals on one line however long. Group-pure commit: G3 only.
roles/consultant.md inspected and left UNCHANGED (G5, no commit needed): already conformant - it states a contract, not a procedure. Under the acceptance model a conformant file passes as-is; shrinking it further would be size-chasing, which the charter amendment explicitly rejects. Suite: 205 files, 4,083 tests, green.
…relay-shaped (G6)
Architect inspection caught a cross-file contradiction my rewrite half-fixed.
builder.md correctly encodes the relay convention ('Approval reaches you as a
message from the architect. Then YOU run porch approve; the architect does not
run it for you') - but architect.md kept the OLD worked example showing the
ARCHITECT running (cd .builders/<id> && porch approve ...). The two roles
disagreed on who the approval actor is.
builder.md was the correct one: it matches the owner's standing convention -
the architect relays the human's word, the builder runs porch approve itself.
It is also what actually happened twice in this project's own gates, so the
architect.md example contradicted observed behaviour.
This is the SAME stale-second-owner class I had just caught on the porch-approve
flag syntax, one level up - and I introduced it by fixing one owner and leaving
the other. Worth recording: catching a class of defect is not the same as being
immune to it.
Gates section now: read the artifact, decide, relay via afx send; the builder
executes against its own porch state. Kept the --a-human-explicitly-approved-this
explanation because the WHY is load-bearing - a gate message is a notification TO
a human, never a token an agent may spend on its own authority.
afx-from-root canonical re-verified verbatim after the edit (the reflow hazard
applies to every rewrite, including fixes). Twins identical. 51 tests green
across the wait-discipline, skills-parity, governance-sweep and
framework-ref-audit suites.
Group-pure commit: G6 only.
… contradiction and its general form
…es from my own script
…builder/1280-rewrite # Conflicts: # packages/codev/src/__tests__/spec-1280-measurement-instrument.test.ts
# Conflicts: # packages/codev/src/__tests__/spec-1280-measurement-instrument.test.ts
… the P6 include mechanism (G3)
Ten decisions, both trees. ALWAYS_ON 28,844 -> 26,384; TOTAL_AUTHORED
144,465 -> 126,155. spir 3,699 -> 671 authored (1,239 served).
P6 MECHANISM: each protocol.md carries a fenced json block containing
{{> protocols/<p>/protocol.json}}. Verified rather than assumed:
resolveCodevIncludes is extension-agnostic, and spawn-roles.ts:127 passes
protocol.md through the same resolver before inlining it as
{{protocol_reference}} - so strict AND soft mode both get the structured source.
New T18 asserts delivery in both modes, which are NOT symmetric: strict-mode
builders also receive gates/checks as porch task JSON, but soft-mode builders
have ONLY this document. A silent expansion failure would leave them with a
protocol doc describing nothing.
RESOLVER MODEL CORRECTED, found by writing T18: tier 4 is getSkeletonDir() - the
INSTALLED NPM PACKAGE - not <root>/codev-skeleton/. The repo-local
codev-skeleton/ is a build source (copy-skeleton copies it into
packages/codev/skeleton); the resolver never reads it. My first fresh-install
test planted files in a temp codev-skeleton/ and 'passed' against the real
installed package. Rewritten to assert the actual adopter guarantee: skeleton is
in the npm files allowlist and every P6 protocol's protocol.json is in the built
skeleton.
release/protocol.md INSPECTED AND UNCHANGED: no protocol.json so P6 does not
apply, and 36% of it is exact commands (git add file lists, the version-anchor
pattern, the pre-release VSCode auto-skip, the backport path) where the sequence
IS the contract. A conformant file passes as-is.
CAPABILITY LOSS I INTRODUCED AND THE TESTS CAUGHT - 37 failures, all repaired,
zero assertions retired:
- #1279 (12): I replaced maintain/spike/experiment's TEMPLATE includes with the
protocol.json include instead of carrying both, orphaning maintenance-run.md,
findings.md and notes.md. Builders would have stopped receiving those artifact
structures. All three restored alongside the JSON.
- Spec 746 (24): Baked Decisions shortened in SPIR and dropped from ASPIR/AIR,
losing the category hints, the amend/rescind escape hatch, and 'absence is the
no-op default'. That last one invites a builder to invent constraints where the
architect deliberately left them open. Restored in full.
Suite: 206 files, 4,117 tests, green - verified after the repairs, not before.
…e premature-green correction
…uously TWO FIXES, one format decision and one root cause. FORMAT DECISION (mine to make, per the architect): the parser learns brace notation. The plan's inspection model is per DECISION, not per file — twins are byte-identical and T7 verifies the sync mechanically, so the architect reads ~66 decisions rather than 131 diffs, and the <=12 batch cap counts decisions. One manifest row naming both tree paths is therefore the correct semantics; the parser had to understand it or the skeleton twins read as uninspectable, which is exactly what it reported. Chose this over splitting rows because splitting would have broken the cap and silently abandoned the per-decision model. ROOT CAUSE of my false green: T16 diffed origin/main...HEAD, which sees only COMMITTED work. I ran the full suite BEFORE committing Phase 3, so the test found no changed prompt files and passed VACUOUSLY — I then reported '4,117 green' for a state that did not contain the rewrite. The test was correct both times; my run measured a tree that no longer existed by the time I claimed it. Now considers committed AND working-tree changes, so a pre-commit run cannot be vacuously green. A guard that passes because it looked at the wrong tree is worse than no guard: it manufactures false confidence precisely when the work is unreviewed. Mutation-verified rather than assumed: removing the spir row from the manifest makes it fail; restoring it makes it pass. After a vacuous pass I am not accepting a green tick as evidence that a guard bites.
…md x9 + scope T16 to this project (G3) Nine prompts rewritten, both trees. Dropped what roles/builder.md now owns (flaky tests, multi-PR mechanics, Getting Started, the ALL-CAPS restrictions block); kept every protocol-specific section. KEPT DESPITE DUPLICATING THE ROLE DOC - the Verify Phase. roles/builder.md mentions 'verify phase' only inside a notification string; it does NOT carry the mechanics. Deleting it here would have repeated precisely the bug Spec 1252 found, where the served SPIR builder prompt had silently lost that entire section. Checked before deleting rather than after. TWO PROTECTIONS KEPT RATHER THAN RETIRED: - #744: all four asserted PR-strategy phrases preserved verbatim. - #619: my first draft replaced 'Follow the ASPIR protocol' with a template variable, breaking it. The original bug had the ASPIR prompt telling builders to follow SPIR - wrong gates entirely. Restored, plus the symmetric line in SPIR, because #619 was a CROSS-protocol mixup and symmetry makes it harder to reintroduce in the other direction. M10: ONE RETIREMENT PROPOSED, NOTHING RETIRED UNILATERALLY. R1 in codev/resources/1280-retirements.md - the pre-746 pure-addition baselines, which this project's deletions make permanently unsatisfiable. Re-baselining is NOT the escape: 746's own pollution check requires the baseline to lack '## Baked Decisions', so a re-baselined file fails it, and silencing that check would gut the anti-vacuity property. 746's substance survives and still passes. Replacement implemented but inert pending approval. T16 SCOPED TO THIS PROJECT - second cross-project firing of my own guards, and worse than the first. Its predicate was repo-global: any prompt-bearing path in origin/main...HEAD had to appear in a 1280 manifest. Living in the shared suite, it fired on Spec 1307, which would have had to file paperwork in MY project directory to go green. A guard that taxes work it does not govern is broken however well it protects its own project. Fixed by provenance, not paths: only files touched by commits tagged [Spec 1280] on this branch are this project's to document; any other branch skips entirely. The uncommitted-changes check is retained so a pre-commit run still cannot pass vacuously.
…n R1; suite red by choice
…rompts (Spec 746)
Architect-approved 2026-08-01. Retires exactly three expectPureAdditionDiff
instances — codev/protocols/{spir,aspir,air}/builder-prompt.md — and nothing else.
ORIGINATING SPEC: 746 (Baked Architectural Decisions). Its baseline is the
PRE-746 file, so the assertion proved 746's paragraph was ADDED without
destroying prior content.
APPROVAL GROUNDS, as given by the architect:
1. The invariant is construction-time scaffolding that hardened into a
change-freeze. It proved non-destructive addition AT THE MOMENT OF ADDITION,
but as a standing assertion it forbids any future deletion-rewrite of those
files forever - which is not a behaviour 746 ever claimed to protect.
2. Spec 746's actual protection survives in assertions that still pass
unmodified: the Baked Decisions sections present and substantive in all three
prompts and both trees, plus the anti-vacuity pollution check.
3. The analysis that re-baselining guts the anti-vacuity half is verified sound,
so retirement-with-trace is strictly more honest than the silent re-baseline
a less careful builder would have shipped.
NOT RETIRED: the identical guards over PHASE_2_FILES (drafting prompts) and
PHASE_3_FILES (reviewer prompts) remain in force. The pollution check - the half
that stops a future builder silently re-baselining the guarantee away - is
untouched and still passing.
1280-retirements.md carries the per-assertion behaviour-re-asserted mapping
naming the surviving test for each, so a future reader can check the claim
rather than trust it.
It also corrects an overstatement of mine: an earlier revision described the
replacement guard as 'implemented, inert until approved'. It was not implemented,
only designed. The architect read that file before approving, so the correction
is recorded rather than quietly fixed. The replacement ships as its own commit.
…ection Ships separately from the retirement, per approval condition 3. R1 retired the pure-addition diff against PRE-746 baselines because it forbade any future deletion-rewrite forever. The protection worth keeping is narrower and survives rewrites: once this project has finished rewriting a prompt, LATER edits must not silently delete from it. Same machinery, re-anchored on post-1280 baselines. ANTI-VACUITY, INVERTED: 746's pollution check asserted its baseline did NOT contain '## Baked Decisions', proving the baseline predated the edit it verified. The equivalent here runs the other way — the post-1280 baseline MUST contain it. If a future edit strips 746's content and someone re-baselines to hide it, the new baseline lacks the heading and this fails. Without that, re-baselining would silently launder a deletion: exactly the failure mode R1's analysis identified and declined to ship. MUTATION-VERIFIED BOTH WAYS rather than assumed green: - deleting a line from a guarded prompt -> fails (deletion guard + twin parity) - laundering that deletion by re-baselining -> fails (anti-vacuity) - restored -> 12 pass Also asserts skeleton-twin parity, so a fix applied to one tree cannot pass while the other drifts.
…the Phase 5 constraint it implies
Architect found it at inspection; verified independently before recording.
PIR builder-prompt: 2 {{artifact_name}} references before, 0 after. That resolves
#1293's blank-filename symptom by deletion, and verification shows why the bug
existed: porch substitutes artifact_name at commands/porch/prompts.ts:102 when
building a PHASE prompt, but the spawn path never substitutes it (grep of
spawn-roles.ts returns nothing). A placeholder in a builder-prompt could only
ever render empty.
#1293 should close against this merge rather than lingering fixed-but-open.
CONSTRAINT FOR PHASE 5: the same placeholder is legitimate and load-bearing in
phase prompts - 51 references across the eleven targets - and deleting it there
would break artifact naming. The rule is positional, not textual: remove it from
spawn-time prompts, preserve it in porch-substituted phase prompts.
Resume state written to codev/state/spir-1280_RESUME.md (gitignored, local to the
persistent worktree - which is where it belongs; it is scratch for the next
session, not a cohort artifact).
Phases 0-4 inspected PASS. Phase 5 next: phase prompts spir/aspir/pir, 11
decisions.
Key carry-forward: {{artifact_name}} is POSITIONAL. Removing it from
builder-prompts fixed #1293; removing it from phase prompts would break artifact
naming (porch substitutes at prompts.ts:102, 51 references across Phase 5's
targets).
Also flagged: porch's plan-phase pointer still reads phase_0_instrument because
phases have been gated by architect inspection rather than porch done. Needs an
architect decision, not a status.yaml hand-edit.
…5 current Phases 0-4 were gated by architect inspection rather than 'porch done', so the plan-phase pointer had drifted to phase_0_instrument. Waleed authorized this hand-edit to bring it to phase_5_prompts_heavy (the phases were verified complete out-of-band; this only reconciles the tracker).
…measured baselines, constraints re-confirmed)
…xtracted from tests
…ces (G4)
experiment/notes, spike/findings, maintain/{maintenance-run,audit-report}: annotated-example
filler -> heading interfaces. maintain/lessons-learned inspected conformant, unchanged.
Preserved maintenance-run's delivery-checked headings (# Maintenance Run NNNN, ## Audit
Findings, ### Dependencies Cleaned) and the experiment/spike include wiring. audit-report +
lessons-learned stay codev-local (no skeleton twin).
5 consult-types, both trees. Rubric prose -> lean focus-area contracts. Kept the VERDICT capability exactly (consult parses it; pr-review keeps PR_SUMMARY), the SPIR-specific Spec-Adherence/Scoping sections that keep impl/pr-review distinct from BUGFIX (#742), and the Baked Decisions sections (canonical tokens) in spec/plan-review. P6 fix on spec-review: replaced the stale hardcoded 20-heading spec-template list (broken by Phase 6's spec.md rewrite) with a reference to the delivered template. spec/plan-review trip Spec 746 Phase 3 pure-addition -> retired under R4 (class pre-approved) in the next two commits.
…w (first PHASE_3 files) Class pre-approved (1280-retirements.md). Phase 7's P1/P2 rewrite deletes pre-746 rubric prose from the two spir consult-types, so their pure-addition invariant is false by design. Behaviour survives (Phase 3 grep passes on canonical Baked Decisions wording); the other four PHASE_3 files (aspir spec/plan-review, air impl/pr-review) verified still in force. Replacement guard in the next commit. Includes the phase-7 manifest.
…pir spec/plan-review Re-anchors the retired R4 pure-addition guard on post-1280 baselines of the two spir consult-types, inverted anti-vacuity (baseline MUST contain 'Baked Decisions'). Mirrors R1-R3. Mutation-verified both ways.
…n (T16) Waleed's ruling 2026-08-06. The completeness scan lived in the shared suite and ran a repo diff + git status on every PR; even scoped by [Spec 1280] provenance its uncommitted-file check caught Mohid's #1330 (which had to strip CLAUDE/AGENTS edits to pass CI) — the second cross-project misfire (Spec 1307 was first). What survives: the manifests, the M11 human inspection contract, and the manifest FORMAT checks (four-fields, batch-cap) which read only 1280's manifest dir. Only the CI tripwire is gone. Also cleaned the audit-report manifest row so its path parses. R5 writeup in 1280-retirements.md.
… P1/P2 (G5) 9 decisions, both trees. aspir x5 mirror the new spir consult-types (they were byte-identical to the old spir versions). air x2 rewritten keeping AIR framing + Baked Decisions. bugfix x2 light touch (decapped CRITICAL, tightened) keeping the #742 Out-of-Scope core + all markers, still differing from SPIR. VERDICT capability preserved in all nine. aspir spec/plan-review + air impl/pr-review trip Spec 746 Phase 3 pure-addition -> retired under R6 (class pre-approved) in the next two commits. Manifest: phase-8-consult-types-a.md.
Class pre-approved. aspir spec/plan-review + air impl/pr-review rewritten in Phase 8 delete pre-746 rubric prose. After R4+R6 every PHASE_3 pure-addition guard is retired; the loop keeps a documenting test so it re-activates for a future PHASE_3 file. Behaviour survives (Phase 3 grep green). Replacement guard next commit.
…spir/air consult-types Re-anchors the retired R6 pure-addition on post-1280 baselines of aspir spec/plan-review + air impl/pr-review, inverted anti-vacuity. Mirrors R1-R4. Mutation-verified both ways.
…1/P2 (G5, batch A) 4 decisions, both trees. maintain impl/pr-review mirror the new spir versions (they were byte-identical to old spir). pir impl/pr-review rewritten keeping PIR-specific context (dev-approval gate, plan adherence, review-file quality, single-pass max_iterations:1). VERDICT capability preserved in all four. Not baked-decisions files — no retirement.
…nt (G7) scar-rules.yaml rebuilt from the Spec 1252 registry: 8 canonicals kept byte-identical, must_appear_on RE-DERIVED against the post-1280 surface (the P1/P4 rewrites removed the git-add prohibition from most prompts — roles/builder.md owns it now — and the dead porch/prompts tree is going; the old lists were stale). All eight survive on CLAUDE.md + AGENTS.md. T4 (spec-1280-scar-rules.test.ts) pins the count at 8 + the ids, enforces byte-identical carriage on every listed surface (rewording fails), and checks the primary-surface guarantee. Mutation-verified: reword fails, delete fails.
… tree (M6, G4) The 10-file Ralph-SPIR-era prompt tree with no runtime consumer — the live resolver (porch loadPromptFile, resolveCodevFile) loads protocols/<p>/prompts/. M6-verified by an untruncated repo-wide search: the only porch/prompts references are the code module porch/prompts.ts (unrelated), historical project docs, and the measurement script's DEAD bucket (now computes 0). Updated review-prompt-routing.test.ts (Spec 987): its routing check on the deleted porch/prompts/review.md is removed; the live prompts/templates are unaffected.
…ication Post-rewrite measurement vs Phase-0 baseline: ALWAYS_ON (builder spir I=10) 34231->18233 (-47%), architect 8599->2960 (-66%), TOTAL_AUTHORED 153205->106032 (-31%). M0c relocation proven: skills grew 42->46 files (+4516w) while everything else shrank, so the always-on drop is deletion + relocation, not pure deletion. M5: no gate/check/signal present in Phase-0 served prompts is absent post-rewrite (extract-capability-inventory.sh vs frozen).
'Trust the authoritative source, not the convenient signal' — the hot-tier principle (summaries are evidence, not ground truth) already covers it, so the concrete Spec 1280 instance catalog + the two mechanical corollaries (commit->run->read->claim quoting the SHA; mutation-test guards both ways) go to lessons-learned.md (cold), respecting the hot cap.
…ates SPIR review for the whole 1280 project. Documents P1-P7 conformance, M5 capability preservation, the six retirements (R1-R6), the measurement (-47% always-on, -31% total), and flags T9 (spawn probe) + full T10 (rollback rehearsal) as integration-time steps that cannot run from a builder worktree. ## Architecture Updates + ## Lessons Learned Updates present for the porch review checks.
Architect Integration ReviewRemarkable project — the −47% always-on surface with every M5 capability guard green, the relocation-not-deletion proof via the total-authored metric, and six retirements each carrying human approval + mutation-verified replacement guards is governance discipline at its best. Ran a 2-way CMAP (codex REQUEST_CHANGES / claude COMMENT, both HIGH confidence) and verified every finding against the worktree myself. Claude's lane independently confirmed the highest-risk items: relocated skills reach existing adopters via I'd like to see four changes before merge — all small:
Ruled on the deferrals (codex wanted them blocking; I don't): T9 live-spawn and full T10 rollback rehearsal run at integration exactly as your review documents — a worktree structurally can't run either (spawn-nesting scar; destructive multi-commit git). They will run at local-install time alongside 1307's verify probes, before any release ships this. Non-blocking follow-ups to file: The replacement-guard-recreates-a-freeze critique (codex) I'm treating as accepted-by-design: the freeze now ships with its documented retirement path, which is the difference the whole register exists to make. |
1. Merge ownership: spir/aspir review.md said 'do not merge your own PR (architect integrates)', contradicting roles/architect.md. Reconciled to 'merge your own PR only after the human approves the pr gate'. 2. Gate ownership scoping: builder.md's 'you run porch approve' now defers to the protocol's prompts on who types it (PIR routes it to the human reviewer). 3. RESEARCH json/md reconcile: protocol.json runs models=['codex'] for investigation while the prose promised three; the prose now defers to the embedded state machine as authoritative and states the current reduced reality (agy/hermes lanes degraded). 4. CLAUDE.md/AGENTS.md dropped the team + forge skill names (don't ship — #1318 drift), so the new prose stops making an active false claim to adopters. CLAUDE==AGENTS byte-identical preserved; scar T4 + bugfix-685 + managed-block green.
Main moved during the pr-gate wait (GitHub Actions outage). Only conflict: CLAUDE.md + AGENTS.md — main made build-detail edits to the verbose sections that Spec 1280 deliberately deleted (P3/P4 relocation to the codev skill). Resolved by taking the 1280 rewrite for both; main's edits are to content the rewrite relocated, so nothing substantive is lost. All other of main's changes auto-merged. # Conflicts: # AGENTS.md # CLAUDE.md
…te green post-merge
…icy decision for Waleed
Summary
Rewrites Codev's always-on prompt surface from rules to judgment (the "judgment not rules" principles P1–P7), across both trees. Ten implement phases: CLAUDE/AGENTS + skills, roles,
protocol.md×10,builder-prompt.md×9, SPIR/ASPIR/PIR phase prompts, light-protocol phase prompts + SPIR templates, all consult-types, the scar-rule registry, and deletion of the deadporch/prompts/tree.Acceptance basis (charter amendment 2026-08-01): principle conformance is pass/fail; size is reporting-only. No word target was chased.
Closes #1280
Changes
codev/resources/1280-measurement-report.md.{{artifact_name}},{{> }}includes, phases-JSON,VERDICT:, PR-body close-keyword heredocs,<signal>tags all survive.scar-rules.yamlrebuilt withmust_appear_onre-derived against the post-rewrite surface; new T4 test enforces byte-identical carriage.codev/resources/1280-retirements.md). R5 removed the repo-wide manifest-completeness CI scan per Waleed's ruling (it taxed concurrent PRs).codev-skeleton/porch/prompts/(10 files, no runtime consumer).Testing
packages/codevsuite green: 4,184 passed / 48 skipped, deterministic.Spec
codev/specs/1280-prompt-surface-judgment-not-ru.md
Plan
codev/plans/1280-prompt-surface-judgment-not-ru.md
Review
codev/reviews/1280-prompt-surface-judgment-not-ru.md