Maintain Octane bindings
Prefer direct upstream imports for demonstrated framework-neutral APIs. Octane
should own the hooks, adapters, and components required for integration. A missing
Octane convenience subpath alone is not a functional gap.
Choose the requested outcome
- Audit or assess: collect current evidence, assess consumer needs and
reduction candidates, and deliver the refreshed report with finding IDs.
- Update or reduce: use an audit report and selected finding IDs to implement
the bounded change below. An audit request alone does not authorize updates.
- Copy or rewrite React implementation: load
octane-react-library-port. Its full
port workflow applies to the implementation actually owned, including copied
slices of mixed packages. New React-library ports start there directly.
Preserve the user's scope and existing authorization. Skill creation or workflow
evaluation does not authorize changes to real bindings. Do not restart a paused
campaign or reopen a closed PR merely because its files appear in an audit.
Collect and assess
Read AGENTS.md, the selected binding's public exports and status, and
docs/differences-from-react.md for relevant behavior. Use the shared inventory
through the audit CLI; do not maintain a separate binding list. Read
audit-evidence.md for report assessments and
baseline comparisons before relying on a report.
Run the audit script directly so package-manager auto-install cannot run lifecycle
scripts during an audit. Required tooling dependencies must already be available;
resolve missing setup separately before auditing.
Choose a report path outside every Git source tree, including worktrees and
ignored directories. For example, use an external temporary directory:
node scripts/bindings-audit.mjs audit --binding <name> --output <external-report.json>
node scripts/bindings-audit.mjs audit --binding <name> --binding <other-name> --output <external-report.json>
node scripts/bindings-audit.mjs audit --all --output <external-report.json>
Use one selection form. --repository <url> selects the intended Octane remote
when needed. Audit fetches isolated remote default-branch checkouts; the caller's
checkout is not the audit baseline. Record released package versions separately
from fetched default-branch SHAs. Audit collection does not create campaign nodes,
migrate matrices, change verification dates, or execute package scripts.
Assess each selected binding's supported behavior and unnecessary copied vanilla
source, bundles, and test snapshots. Inspect actual imports and consumer scenarios;
snapshot presence suggests a candidate, not permission to delete it. Classify
findings as functional-gap, compatibility-defect, dependency-update,
metadata-drift, convenience-import, unverified-compatibility, or
reduction-candidate. Functional gaps and compatibility defects require a concrete
consumer failure. Keep unresolved compatibility explicitly unverified.
Add evidence-backed assessments to the external report, preserving collected
facts. Before delivering findings, run the final fetch and report pass:
node scripts/bindings-audit.mjs report --input <external-report.json>
Audit/revalidate write JSON to stdout; report writes human output. Diagnostics go
to stderr. Exit 0 means collection and freshness completed, not proven
compatibility; 1 means invalid input or an unusable root baseline; 2 means partial
or stale evidence. Show incomplete bindings and affected findings accurately.
Implement selected findings
Before edits or delegation, record a scope capsule containing:
- the consumer problem or concrete maintenance benefit and expected behavior;
- the report path, selected finding IDs, release identity, and baseline SHAs;
- owned files, validation commands, and explicit exclusions;
- for removal, candidate paths and the supported contracts and evidence to retain.
Refresh immediately before implementation:
node scripts/bindings-audit.mjs revalidate --input <external-report.json> --finding <id>
Repeat --finding for multiple selections. Compare relevant files in the actual
implementation checkout with the audit's file fingerprints, including missing,
new, and untracked files. A fresh remote alone does not validate local work. Resolve
differences by inspecting and reassessing against the current baseline; preserve
unrelated changes. Do not implement from failed acquisition, stale findings, a
changed source identity, or unresolved prior invalidation. Follow the reassessment
rules in the audit reference; timestamps or SHA edits alone cannot refresh proof.
Read ownership-and-removal.md before
selecting evidence or deleting files. Use the shared observed-source policy:
ordinary dependencies retain identity, exports, public types, package consumption,
and focused integration checks; adapters add their owned lifecycle checks; copied
React work retains provenance, mapping, and pristine/adapted parity. Unknown or
legacy ownership keeps strict requirements until explicitly validated and migrated.
Implement the smallest change that meets the capsule. Preserve supported imports,
public types, behavior, applicable licenses, and relevant adapter tests. A request
for more wrapper imports does not justify copying an upstream tree. Before adding
unexpected vendored trees, bundles, shared-tool changes, or substantial growth,
reassess necessity and scope; ask only if the new work requires a missing decision
or authority. Continue already authorized routine work without permission loops.
Run the selected evidence, repair relevant failures in the owning package, and
refresh the selected findings again before delivery. Use report --input ... --finding <id> for the final pass. If upstream advanced during implementation,
reassess affected conclusions and rerun affected checks against replacement
baselines. Keep intended implementation differences separate from baseline proof.
Independently review the actual diff against the original consumer problem and
capsule before committing or pushing. Passing checks do not justify unnecessary
files. Remove unrelated additions. Follow create-a-pr when shipping is authorized,
preserving authorization already given; the skill grants no extra shipping scope.
Deliver the report path and selected IDs, changed paths, observed checks, remaining
uncertainty, and current freshness. For reduction, report before/after file and byte
counts separately from runtime, types, lifecycle, package-consumption, and license
evidence. Claim only the compatibility actually demonstrated.