A frozen corpus thaws, procedures become skills, and cuts land on the beat.
Upgrading
The promise from v0.3.0 is delivered: legacy workspaces promote in place.
v0.3.0 made pre-revision workspaces read-only for new evidence and deferred
in-place promotion because the obvious implementation destroyed the data it
was meant to save. va rebind (ADR-0006) now backfills a frozen workspace
into revision binding: dry-run by default, apply re-probes the source and
journals the transition. When the source media is gone the tool refuses —
a rebind without re-measurement would bind evidence to nothing, so those
workspaces stay read-only by design and va audit keeps naming the split.
Understanding → skills
- Procedure knowledge layer. Recurring
task-*/tool-*tagged steps
compile into per-task procedure pages with timestamp anchors and an
explicit evidence enumeration per step (visual_verified / speech_only /
agent_estimated) — the execution-critical distinction, since transcripts
recover procedure skeletons but not exact tokens (menu paths, values,
commands). - Approval-pending skill drafts.
va skillgencompiles promoted
procedures (3+ recurring videos) into skill drafts whose execution steps
come from visually grounded checkpoints only; speech-only steps and
precision warnings land in a mandatory known-weaknesses section. Drafts
stay inactive until a human approves. - Intent-coherence gate. A task whose sources disagree on tooling does
not promote: tool tags form a strict-majority consensus, and a source
sharing nothing with it blocks the draft until retagged or split —
mixed-purpose corpora silently corrupting execution values is the failure
this closes.va skillgen --routereports, per task, which gate still
blocks promotion (draft / blocked-intent / needs-workspaces). va auditgrew matching axes: procedure maturity, evidence distribution,
visually unconfirmed exact tokens, and image-index consistency.
Editing
- Beat-quantized rhythm lane.
va beatsextracts a fixed-tempo beat
grid (beats.json: bpm, beat times, 1s energy arc) from a music track;
va beat-evalmeasures every output-timeline join of a sequence against
the nearest beat and gates at p90 |offset| <= 40 ms by exit code. Its
--snapoutput is a proposal only — applying it is a new sequence
revision, so the decision ledger remains the only writer. - The skill surface now carries the montage grammar that goes with it:
Kuleshov re-contextualizing, one-point push-ins, chapter letterboxing,
and an isolated grade layer.
Search
- Persistent BM25 index.
.tca-search-cache.dbis a
fingerprint-incremental FTS5 inverted index (word + trigram, RRF-fused)
with hybrid Korean recall; warm corpus queries drop from ~114 ms to
16–23 ms. Exact tokens are indexed, a majority-coverage fallback catches
scattered-term queries, and rank ties break understanding > screen >
transcript.
Story Map and view
- Story Map. A read-only projection of both ledgers onto one
proportional timeline: checkpoint tracks with grounding cross-highlight,
an edit lane with cut provenance back to source spans (excluded regions
stay visible), rejected alternatives, and conditional speaker ribbons. - The corpus browser renders the edit ledger (cuts, rejected alternatives,
evidence anchors), keeps human-facing Korean surfaces consistent, and
gates serverless operation, legibility and render performance with
regression tests. va askanswers its supported count intent with a canonical evidence
envelope projected to Korean/English human text or compact agent JSON —
evidence is computed once, uncertainty intervals are explicit, and
count: 0never claims "none".
Observability and integrity
- Frozen-corpus state is a first-class surface: audit names bound versus
read-only workspaces instead of letting writes fail later. - Mixed-form videos (narration + long silent stretches) are detected at
brief time, so a timelapse segment is not covered by one
transcript-shaped checkpoint. - Wiki slugs derive from labels character-escaped and injectively — two
labels can no longer race for one filename — and slug reassignment is
detected by a regression gate. - A real-corpus smoke script joins the verification procedure, observing
scale that synthetic fixtures cannot.
Install
git clone https://github.com/mupozg823/timecode-agent.git && cd timecode-agent
uv tool install --python 3.12 . # add '.[diarize]' for pyannote diarizationRequires ffmpeg/ffprobe on PATH, plus yt-dlp for URL ingest. See the
README
(한국어).
Full Changelog: v0.3.0...v0.4.0