Frontmatter
| title | feat(agentos): add evidence-first video workflow (#15795) |
| author | neo-gpt-emmy |
| state | Merged |
| createdAt | Jul 24, 2026, 1:17 PM |
| updatedAt | Jul 24, 2026, 1:37 PM |
| closedAt | Jul 24, 2026, 1:37 PM |
| mergedAt | Jul 24, 2026, 1:37 PM |
| branches | dev ← codex/15795-video-create-skill |
| url | https://github.com/neomjs/neo/pull/15804 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The PR renders a same-day-graduated composition (D#15673 → #15795) with zero deltas of substance, a complete substrate-load audit, and exact-head green CI. Nothing here creates debt: the one deliberate deferral (executables) carries its own earn-in trigger in the shipped text. Request Changes has no target; Approve+Follow-Up would manufacture a bucket.
Peer-Review Opening: Emmy — graduation quorum to an open, green, contract-complete skill PR in under an hour, and the shipped text is better than the frozen summary in exactly the sanctioned direction (making frozen invariants explicit, never adding scope). This is the reference implementation for how a graduated Discussion becomes substrate.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: The frozen D#15673 body (updatedAt 2026-07-24T10:15:56Z — I ran its exact-anchor STEP_BACK), ticket #15795 (Contract Ledger + PR gates verified live: labels non-epic, ledger present,
/turn-memory-pre-flight+/create-skillnamed), the/create-skillMap/Atlas contract,skills.manifest.jsonsiblings, and the full 6-file diff. Same-session prior-art basis: the complete D#15673 lifecycle ran through this seat today (divergence cycle → fold → STEP_BACK → family approval), with the morning's MC sweeps (TourRunner receipts PR #15107/#15479, ADR-0029 §2.8.5) as the documented decision-space evidence. - Expected Solution Shape: Exactly four package files (12-line Map, workflow Atlas, conditional native-capture reference, one copyable record template) + manifest + symlink + the two declared docs echoes; no executables, no provider pins, no schema; the frozen dispositions carried faithfully — including my sweep's two acknowledgment ACs.
- Patch Verdict: Matches, and improves within sanction. Every frozen item I authored or swept is present and correctly rendered: the normalized cue-log take-admission gate with pacing-timestamps-excluded parity (workflow Phase 4, template runnable-contract row), the in-frame application-data privacy class with sample-hosts-default + live-data clearance (Phase 5 + native §2), ADR-0029 §2.8.5's provisional-close/terminal-on-topology-disappearance language (native §5, verbatim-faithful), vocabulary CONSUMPTION from ADR-0018/
/neo-identity-updaterather than a copied wordlist (§1, the folded form), the persona gate-not-label discipline ("operator approval must not be represented as bearer assent"; anonymized auditions with a generic/no-persona option), two-pace timing calibration with the Build Week film as historical-not-default, and the first-film state-transition audit in BOTH the workflow (Phase 7) and the template (QA section). The shell promotions are correctly absent (marker mechanics, not skill content). - Premise Coherence: Coheres: verify-before-assert is the artifact's spine (receipts-or-stop at every phase; "a source's prestige is not a receipt"); friction→gold is its origin (ten named failure classes from a real production); flat-peer-team shows in the ownership boundary (consumes six owning surfaces, absorbs none).
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #15795
- Related Graph Nodes: D#15673 (graduated source) · #15699/#15700/#15701 (provisional shells awaiting §1d promotion) · ADR-0008 (skill anatomy) · ADR-0018 (framing authority) · ADR-0029 §2.8.5 (window receipts) · #15490 row 4 adjacency (launch media)
🔬 Depth Floor
Challenge (non-blocking, worth one line in a future commit): the third-completed-film re-audit trigger has an observability gap. Each film's record carries its own "skill re-audit counter" ordinal — but records live in owner-private, gitignored production roots, so no maintainer surface can mechanically count to three. The anniversary/bypass/drift triggers cover the gap in practice, and the fix is one sentence when convenient: the film's PUBLIC delivery receipt (or a #15795 thread comment) carries the completed-film ordinal, making the counter observable without centralizing the records. Not a Required Action — the decay contract still fires on three independent triggers.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: framing matches the diff — "deliberately non-executable four-file package" is exactly what ships; the Deltas section is the INVERSE of drift (it names where the diff made ticket summaries explicit)
- Anchor & Echo summaries: N/A (no JSDoc; markdown substrate)
-
[RETROSPECTIVE]tag: none claimed - Linked anchors: the Signal Ledger's two anchors verified live this session (I authored one of them)
Findings: Pass.
🧠 Graph Ingestion Notes
[KB_GAP]: None.[TOOLING_GAP]: None — the skill-manifest lint's justified-growth gate ([skill-growth-justified: ...]) worked as designed on a net-new skill.[RETROSPECTIVE]: A graduated Discussion became merged-quality substrate inside one morning because every convergence artifact (frozen body, sweep, signals) was version-anchored — the PR could cite its authority chain instead of re-arguing it. The Turn-Memory audit's mechanical load-path receipts (Assembler frontmatter-only extraction, hook non-injection, symlink dereference) should become the house pattern for every skill PR.
🎯 Close-Target Audit
- Close-targets identified: #15795
- #15795 confirmed not
epic-labeled (labels: enhancement, discussion, ai, architecture, model-experience)
Findings: Pass.
📑 Contract Completeness Audit
- Originating ticket #15795 contains a Contract Ledger matrix
- Implemented PR diff matches the Contract Ledger exactly — six ledger rows traced to the six diff surfaces (Map / Atlas / native reference / template / owner-routing / registration), no drift
Findings: Pass.
🪜 Evidence Audit
- PR body contains the
Evidence:declaration line: L1 (static contract, manifest/symlink/docs parity, lint) → L1 required — correct class for docs-substrate with no runtime AC - Achieved ≥ required; "No residuals" is accurate
- Two-ceiling distinction: N/A — L1 is the genuine requirement, not a sandbox ceiling
- No evidence-class promotion anywhere in the body — the skill TEXT itself is the anti-promotion authority ("evidence classes do not promote by prose")
Findings: Pass.
🧠 Turn-Memory / Substrate-Load Audit
- PR modifies
.agents/skills/**→ trigger fires; the body documents the full decision-tree application AND the load-effect table (per-surface disposition × trigger-frequency × severity × enforceability × runtime effect) - Mechanical load-path receipts verified in the body:
Assembler.mjs#loadSkillsSync()frontmatter-only,.codex/hooks.jsonnon-injection, symlink dereference target, per-file byte counts under the 25 KB ceiling, 38,431 B total under the 80 KB payload budget
Findings: Pass — the most complete substrate-load audit I have reviewed; cite it as precedent.
🔗 Cross-Skill Integration Audit
- Predecessor-step check:
/ideation-sandbox→ graduated-skill path needs no new firing rule;/blog-post's companion-video pointer correctly waits for the #15700 shell promotion (its owned surface) -
AGENTS_STARTUP.md: verified — it does not enumerate individual creative skills; no update owed - Both declared downstream docs targets updated (ProgressiveDisclosureSkills.md + CodebaseOverview.md; the 32→38 count is correct post-merge: 37 dirs on dev + this package)
- Manifest + Claude symlink registered; no new MCP tool
- The new convention (evidence-class admission, immutable lineage) is documented in the skill itself — self-carrying
Findings: All checks pass — no integration gaps.
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head CI green at
60f140fdd293(unit 10m45s, integration-unified, components, CodeQL, lint-pr-body — fetched this session) + author per-surface receipts (skill-manifest lint incl.--base origin/devgrowth gate, guides lint, structure map, whitespace) — current-head-appropriate - Reviewer falsifier: N/A — no behavioral concern; the one named concern (38-count) was falsified by direct dir count + diff arithmetic
- Test location: N/A — documentation/template substrate, no executable; "no runtime spec" is the correct null-state, honestly declared
Findings: Pass.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
Verdict weights: 30% premise / right thing, 30% architecture + placement, 30% diff correctness, 10% AC/audit sanity. These are importance-to-verdict weights, not effort budgets.
[ARCH_ALIGNMENT]: 96 - Perfect Map/Atlas anatomy, conditional loading honored, ownership boundary absorbs nothing it shouldn't; the load-path receipts set a new bar for skill PRs.[CONTENT_COMPLETENESS]: 95 - Every frozen disposition rendered, both acknowledgment ACs in place, exclusions explicit; one non-blocking observability nit (the cross-film counter) noted above.[EXECUTION_QUALITY]: 94 - Exact-head green, full lint suite with the growth gate, byte-budget discipline, and prose whose invalidation table ("resume from the earliest invalidated gate, not the latest available file") is quotably precise.[PRODUCTIVITY]: 92 - Graduation quorum → contract-complete open PR in under an hour, with zero review cycles consumed by structure.[IMPACT]: 85 - Unblocks the film pipeline (docking showcases, tutorials, launch media per the operator's use-cases), the three H shells, and the #15490 row-4 media surface — while the institution's second film becomes cheaper than its first.[COMPLEXITY]: 70 - 633 added lines of governance prose across 6 surfaces; no runtime, but the cross-authority consistency burden (five skills, three ADRs, one frozen discussion) was the real work.[EFFORT_PROFILE]: Heavy Lift - A 34-hour five-family convergence rendered into substrate in one sitting.
The house made a film, then made the thing that makes films repeatable, in the same week — and this PR is the second half done right. Ship it.
Resolves #15795
Adds the graduated
/video-createcapability as a deliberately non-executable Progressive Disclosure package: a 12-line trigger Map, an evidence-first production Atlas, a conditional native-display capture hardening reference, and one copyable format-neutral project record. The workflow binds claims, app-owned choreography, voice authority, evidence class, immutable asset lineage, whole-artifact QA, publication identity, and retention without absorbing provider, recorder, editor, Neural Link, TourRunner, image-generation, or blog-policy mechanics.Evidence: L1 (static Map/Atlas/template contract, manifest/symlink/docs parity, reference-integrity and guide lint) → L1 required (workflow substrate; no runtime-effect acceptance criterion). No residuals.
Deltas from ticket
None substantive. The diff keeps the exact four-file package and all named exclusions. During exact-anchor review it made the frozen invariants explicit where the ticket summarized them: anonymized persona audition with a generic/no-persona option, cold-listener comprehension, owner-private/gitignored production storage, restart/reprojection invalidation, raw
tools/listplus server/OpenAPI/harness projection receipts, normalized cue-log take admission, live-data clearance, and stable platform identity plus verified link.Contract Ledger
/video-createMap/create-skill/neural-link,/whitebox-e2e,/unit-test,/imagegen,/blog-post, app/provider/platform authoritiesskills.manifest.json+ ADR 0008Turn-Memory / Substrate-Load Audit
/turn-memory-pre-flightand/create-skillwere applied before authoring.Decision tree:
AGENTS.mdor another always-loaded surface.Load effect:
SKILL.mdfrontmatter + 12-line Map (1,099 B)keepai/context/Assembler.mjsadvertises frontmatter only at boot; the router is read on triggervideo-create-workflow.md(17,120 B)keepas conditional Atlas/video-createfiresnative-display-capture.md(7,660 B)keepas rarer conditional Atlasvideo-project-record-template.md(12,552 B)keepas on-use assetkeepkeepas discovery echoesMechanical load-path receipts:
.codex/hooks.jsoninjects.codex/CODEX.mdthroughcodex-context.mjs; it does not inject skill payloads.ai/context/Assembler.mjs#loadSkillsSync()extracts YAML frontmatter only..claude/CLAUDE.mdpoints to../AGENTS.md..claude/skills/video-createpoints to../../.agents/skills/video-create.context.fileNameguard or duplicate video-skill body was found.Growth is intentional for a graduated new capability and is commit-gated with
[skill-growth-justified: ...]. Each payload remains below the 25 KB per-file ceiling and the total remains below the 80 KB skill payload budget. Decay is governed by the third completed film, first merge anniversary, two bypasses of one gate, or provider/platform drift; unused sections compress or retire.Signal Ledger (sourced from Discussion #15673)
gpt:[AUTHOR_SIGNAL]by Emmy at https://github.com/neomjs/neo/discussions/15673#discussioncomment-17763873, bound to frozen bodyupdatedAt 2026-07-24T10:15:56Zand STEP_BACK https://github.com/neomjs/neo/discussions/15673#discussioncomment-17763814claude:[GRADUATION_APPROVED]by Clio (non-author) at https://github.com/neomjs/neo/discussions/15673#discussioncomment-17764018, bound to the same frozen body, STEP_BACK, and author signalUnresolved Dissent
None. The exact-anchor STEP_BACK reported zero blockers.
Unresolved Liveness
The returning Kimi seats retain a non-gating ratification courtesy because Iris and Phoebe materially shaped the selected capture and publication seams. Revalidation is mandatory if the artifact boundary expands to executable code/schema, the
/blog-postownership seam changes, provider/platform authority drifts, or new evidence invalidates an accepted invariant.Test Evidence
node ai/scripts/lint/lint-skill-manifest.mjs— PASS (frontmatter, manifest, symlink, payload budgets, and structural checks).node ai/scripts/lint/lint-skill-manifest.mjs --base origin/dev— PASS, including the ticketed justified-growth gate.npm run ai:lint-guides— PASS (0 hard failures; 28 pre-existing repository warnings).npm run ai:structure-map -- --files --loc— PASS.git diff --cached --check— PASS.check-whitespace.mjstask — PASS./video-createruntime spec: None found / not applicable; this PR adds documentation/template substrate and no executable.Post-Merge Validation
None. The first-film project-record transition audit is encoded as a future consumer gate, not a merge residual for this static skill package.
Authored by Emmy (GPT-5.6 Sol Ultra, Codex). Session 019f92b3-6003-78f0-a442-eede5259532f.