remaind 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- remaind-0.1.0/.github/workflows/ci.yml +97 -0
- remaind-0.1.0/.github/workflows/release.yml +63 -0
- remaind-0.1.0/.gitignore +44 -0
- remaind-0.1.0/LICENSE +21 -0
- remaind-0.1.0/PKG-INFO +174 -0
- remaind-0.1.0/README.md +144 -0
- remaind-0.1.0/pyproject.toml +98 -0
- remaind-0.1.0/src/remaind/__init__.py +3 -0
- remaind-0.1.0/src/remaind/__main__.py +10 -0
- remaind-0.1.0/src/remaind/_artifacts.py +53 -0
- remaind-0.1.0/src/remaind/_atomic.py +91 -0
- remaind-0.1.0/src/remaind/_compaction.py +59 -0
- remaind-0.1.0/src/remaind/_compactor.py +158 -0
- remaind-0.1.0/src/remaind/_configs.py +21 -0
- remaind-0.1.0/src/remaind/_db.py +327 -0
- remaind-0.1.0/src/remaind/_events.py +217 -0
- remaind-0.1.0/src/remaind/_handover.py +32 -0
- remaind-0.1.0/src/remaind/_handover_writer.py +41 -0
- remaind-0.1.0/src/remaind/_jsonl.py +32 -0
- remaind-0.1.0/src/remaind/_paths.py +109 -0
- remaind-0.1.0/src/remaind/_redaction.py +83 -0
- remaind-0.1.0/src/remaind/_resume_gate.py +125 -0
- remaind-0.1.0/src/remaind/_resume_packet.py +284 -0
- remaind-0.1.0/src/remaind/_rollback.py +86 -0
- remaind-0.1.0/src/remaind/_schemas.py +39 -0
- remaind-0.1.0/src/remaind/_state_writer.py +80 -0
- remaind-0.1.0/src/remaind/_templates/CONTRACT.md +113 -0
- remaind-0.1.0/src/remaind/_templates/README.md +46 -0
- remaind-0.1.0/src/remaind/_templates/active/handover.md +26 -0
- remaind-0.1.0/src/remaind/_templates/schemas/event.schema.json +118 -0
- remaind-0.1.0/src/remaind/_templates/schemas/memory.schema.json +76 -0
- remaind-0.1.0/src/remaind/_templates/schemas/redaction.yaml +29 -0
- remaind-0.1.0/src/remaind/_templates/schemas/state.schema.json +102 -0
- remaind-0.1.0/src/remaind/_templates/schemas/thresholds.yaml +30 -0
- remaind-0.1.0/src/remaind/_templates/schemas/tools.yaml +14 -0
- remaind-0.1.0/src/remaind/_templates/schemas/validation.schema.json +39 -0
- remaind-0.1.0/src/remaind/_thresholds.py +74 -0
- remaind-0.1.0/src/remaind/_timestamps.py +24 -0
- remaind-0.1.0/src/remaind/_tokens.py +43 -0
- remaind-0.1.0/src/remaind/_ulid.py +60 -0
- remaind-0.1.0/src/remaind/_validator.py +165 -0
- remaind-0.1.0/src/remaind/cli.py +248 -0
- remaind-0.1.0/src/remaind/commands/__init__.py +1 -0
- remaind-0.1.0/src/remaind/commands/compact.py +177 -0
- remaind-0.1.0/src/remaind/commands/init.py +181 -0
- remaind-0.1.0/src/remaind/commands/resume.py +86 -0
- remaind-0.1.0/src/remaind/commands/rollback.py +143 -0
- remaind-0.1.0/src/remaind/commands/status.py +130 -0
- remaind-0.1.0/src/remaind/commands/validate.py +193 -0
- remaind-0.1.0/src/remaind/migrations/__init__.py +23 -0
- remaind-0.1.0/src/remaind/migrations/adapter.py +60 -0
- remaind-0.1.0/src/remaind/migrations/protocol.py +43 -0
- remaind-0.1.0/src/remaind/migrations/runner.py +60 -0
- remaind-0.1.0/template-archive/.claude/agent-memory/scaffold-init/MEMORY.md +3 -0
- remaind-0.1.0/template-archive/.claude/agent-memory/scaffold-init/project_design_system.md +18 -0
- remaind-0.1.0/template-archive/.claude/agent-memory/scaffold-wire/MEMORY.md +3 -0
- remaind-0.1.0/template-archive/.claude/agent-memory/scaffold-wire/project_wire_complete.md +11 -0
- remaind-0.1.0/template-archive/.claude/agent-prompt-footer.md +14 -0
- remaind-0.1.0/template-archive/.claude/agents/README.md +71 -0
- remaind-0.1.0/template-archive/.claude/agents/accessibility-scanner.md +150 -0
- remaind-0.1.0/template-archive/.claude/agents/behavior-verifier.md +337 -0
- remaind-0.1.0/template-archive/.claude/agents/build-info-collector.md +83 -0
- remaind-0.1.0/template-archive/.claude/agents/design-consistency-checker.md +156 -0
- remaind-0.1.0/template-archive/.claude/agents/design-critic.md +438 -0
- remaind-0.1.0/template-archive/.claude/agents/design-page-contract.md +94 -0
- remaind-0.1.0/template-archive/.claude/agents/gate-keeper.md +368 -0
- remaind-0.1.0/template-archive/.claude/agents/implementer.md +109 -0
- remaind-0.1.0/template-archive/.claude/agents/observer.md +202 -0
- remaind-0.1.0/template-archive/.claude/agents/pattern-classifier.md +304 -0
- remaind-0.1.0/template-archive/.claude/agents/performance-reporter.md +206 -0
- remaind-0.1.0/template-archive/.claude/agents/provision-scanner.md +111 -0
- remaind-0.1.0/template-archive/.claude/agents/quality-fixer.md +183 -0
- remaind-0.1.0/template-archive/.claude/agents/resolve-challenger.md +98 -0
- remaind-0.1.0/template-archive/.claude/agents/resolve-reviewer.md +187 -0
- remaind-0.1.0/template-archive/.claude/agents/review-challenger.md +110 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-externals.md +93 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-images.md +205 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-init.md +105 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-landing.md +117 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-libs.md +86 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-pages.md +172 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-setup.md +87 -0
- remaind-0.1.0/template-archive/.claude/agents/scaffold-wire.md +142 -0
- remaind-0.1.0/template-archive/.claude/agents/security-attacker.md +148 -0
- remaind-0.1.0/template-archive/.claude/agents/security-defender.md +143 -0
- remaind-0.1.0/template-archive/.claude/agents/security-fixer.md +193 -0
- remaind-0.1.0/template-archive/.claude/agents/solve-critic.md +267 -0
- remaind-0.1.0/template-archive/.claude/agents/spec-reviewer.md +174 -0
- remaind-0.1.0/template-archive/.claude/agents/ux-journeyer.md +259 -0
- remaind-0.1.0/template-archive/.claude/agents/visual-implementer.md +104 -0
- remaind-0.1.0/template-archive/.claude/archetypes/cli.md +87 -0
- remaind-0.1.0/template-archive/.claude/archetypes/service.md +82 -0
- remaind-0.1.0/template-archive/.claude/archetypes/web-app.md +49 -0
- remaind-0.1.0/template-archive/.claude/commands/audit.md +35 -0
- remaind-0.1.0/template-archive/.claude/commands/bootstrap.md +48 -0
- remaind-0.1.0/template-archive/.claude/commands/change.md +95 -0
- remaind-0.1.0/template-archive/.claude/commands/deploy.md +36 -0
- remaind-0.1.0/template-archive/.claude/commands/distribute.md +135 -0
- remaind-0.1.0/template-archive/.claude/commands/iterate.md +47 -0
- remaind-0.1.0/template-archive/.claude/commands/observe.md +30 -0
- remaind-0.1.0/template-archive/.claude/commands/optimize-prompt.md +26 -0
- remaind-0.1.0/template-archive/.claude/commands/resolve.md +76 -0
- remaind-0.1.0/template-archive/.claude/commands/retro.md +31 -0
- remaind-0.1.0/template-archive/.claude/commands/review.md +59 -0
- remaind-0.1.0/template-archive/.claude/commands/rollback.md +36 -0
- remaind-0.1.0/template-archive/.claude/commands/solve.md +59 -0
- remaind-0.1.0/template-archive/.claude/commands/spec.md +39 -0
- remaind-0.1.0/template-archive/.claude/commands/teardown.md +33 -0
- remaind-0.1.0/template-archive/.claude/commands/upgrade.md +34 -0
- remaind-0.1.0/template-archive/.claude/commands/verify.md +50 -0
- remaind-0.1.0/template-archive/.claude/hooks/adversarial-merge-gate.sh +210 -0
- remaind-0.1.0/template-archive/.claude/hooks/agent-trace-write-gate.sh +73 -0
- remaind-0.1.0/template-archive/.claude/hooks/agent-trace-write-guard.sh +387 -0
- remaind-0.1.0/template-archive/.claude/hooks/artifact-integrity-gate.sh +251 -0
- remaind-0.1.0/template-archive/.claude/hooks/bootstrap-phase-a-write-guard.sh +200 -0
- remaind-0.1.0/template-archive/.claude/hooks/branch-checkout-propagation-gate.sh +104 -0
- remaind-0.1.0/template-archive/.claude/hooks/design-ux-merge-gate.sh +5 -0
- remaind-0.1.0/template-archive/.claude/hooks/fix-ledger-write-guard.sh +161 -0
- remaind-0.1.0/template-archive/.claude/hooks/gate-artifact-bash-write-guard.sh +171 -0
- remaind-0.1.0/template-archive/.claude/hooks/gate-artifact-write-gate.sh +97 -0
- remaind-0.1.0/template-archive/.claude/hooks/lead-deliverable-gate.sh +115 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-artifacts.sh +261 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-core.sh +208 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-gate-verdicts.sh +127 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-hard-gate.sh +61 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-merge.sh +153 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-state.sh +366 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-verdict-consistency.sh +90 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib-verdict.sh +8 -0
- remaind-0.1.0/template-archive/.claude/hooks/lib.sh +16 -0
- remaind-0.1.0/template-archive/.claude/hooks/observe-commit-gate.sh +77 -0
- remaind-0.1.0/template-archive/.claude/hooks/patterns-saved-gate.sh +103 -0
- remaind-0.1.0/template-archive/.claude/hooks/phase-boundary-gate.sh +155 -0
- remaind-0.1.0/template-archive/.claude/hooks/resolve-learnings-gate.sh +87 -0
- remaind-0.1.0/template-archive/.claude/hooks/retrospective-content-gate.sh +137 -0
- remaind-0.1.0/template-archive/.claude/hooks/security-merge-gate.sh +5 -0
- remaind-0.1.0/template-archive/.claude/hooks/skill-agent-gate.sh +386 -0
- remaind-0.1.0/template-archive/.claude/hooks/skill-commit-gate.sh +88 -0
- remaind-0.1.0/template-archive/.claude/hooks/skill-write-gate.sh +43 -0
- remaind-0.1.0/template-archive/.claude/hooks/state-completion-gate.sh +557 -0
- remaind-0.1.0/template-archive/.claude/hooks/trace-write-guard.sh +163 -0
- remaind-0.1.0/template-archive/.claude/hooks/verify-pr-gate.sh +304 -0
- remaind-0.1.0/template-archive/.claude/hooks/verify-report-gate.sh +187 -0
- remaind-0.1.0/template-archive/.claude/hooks/worktree-boundary-gate.sh +114 -0
- remaind-0.1.0/template-archive/.claude/patterns/adversarial-merge-trace-skip.json +18 -0
- remaind-0.1.0/template-archive/.claude/patterns/agent-output-contract.md +524 -0
- remaind-0.1.0/template-archive/.claude/patterns/agent-registry.json +350 -0
- remaind-0.1.0/template-archive/.claude/patterns/agent-trace-protocol.md +207 -0
- remaind-0.1.0/template-archive/.claude/patterns/analytics-verification.md +31 -0
- remaind-0.1.0/template-archive/.claude/patterns/archetype-behavior-check.md +463 -0
- remaind-0.1.0/template-archive/.claude/patterns/audit-logging.md +69 -0
- remaind-0.1.0/template-archive/.claude/patterns/audit-verb-registry.json +37 -0
- remaind-0.1.0/template-archive/.claude/patterns/auto-merge.md +192 -0
- remaind-0.1.0/template-archive/.claude/patterns/bound-target-write-guard.md +307 -0
- remaind-0.1.0/template-archive/.claude/patterns/branch-cleanup-error-template.md +49 -0
- remaind-0.1.0/template-archive/.claude/patterns/branch.md +104 -0
- remaind-0.1.0/template-archive/.claude/patterns/checkpoint-resumption.md +57 -0
- remaind-0.1.0/template-archive/.claude/patterns/chrome-mcp-setup-guide.md +66 -0
- remaind-0.1.0/template-archive/.claude/patterns/coherence-rule-schema.json +497 -0
- remaind-0.1.0/template-archive/.claude/patterns/context-init.md +66 -0
- remaind-0.1.0/template-archive/.claude/patterns/convergence-config.json +8 -0
- remaind-0.1.0/template-archive/.claude/patterns/cross-reference-style.md +129 -0
- remaind-0.1.0/template-archive/.claude/patterns/debugging-guide.md +30 -0
- remaind-0.1.0/template-archive/.claude/patterns/demo-server-startup.md +51 -0
- remaind-0.1.0/template-archive/.claude/patterns/design.md +293 -0
- remaind-0.1.0/template-archive/.claude/patterns/earc.md +171 -0
- remaind-0.1.0/template-archive/.claude/patterns/finalize-epilogue.md +38 -0
- remaind-0.1.0/template-archive/.claude/patterns/gate-artifact-ordering.md +70 -0
- remaind-0.1.0/template-archive/.claude/patterns/gate-inventory.json +583 -0
- remaind-0.1.0/template-archive/.claude/patterns/gate-readable-artifacts-canonical.json +1386 -0
- remaind-0.1.0/template-archive/.claude/patterns/gate-readable-artifacts-pending-review.json +510 -0
- remaind-0.1.0/template-archive/.claude/patterns/gate-readable-canonical-exemptions.json +11 -0
- remaind-0.1.0/template-archive/.claude/patterns/given-auth-matcher.md +187 -0
- remaind-0.1.0/template-archive/.claude/patterns/incident-response.md +88 -0
- remaind-0.1.0/template-archive/.claude/patterns/iterate-cross-debug-prompts.md +57 -0
- remaind-0.1.0/template-archive/.claude/patterns/lead-only-artifacts.json +21 -0
- remaind-0.1.0/template-archive/.claude/patterns/messaging.md +177 -0
- remaind-0.1.0/template-archive/.claude/patterns/observation-phase.md +796 -0
- remaind-0.1.0/template-archive/.claude/patterns/observe.md +261 -0
- remaind-0.1.0/template-archive/.claude/patterns/on-touch-check.md +50 -0
- remaind-0.1.0/template-archive/.claude/patterns/provenance.md +198 -0
- remaind-0.1.0/template-archive/.claude/patterns/q-score.md +172 -0
- remaind-0.1.0/template-archive/.claude/patterns/read-context.md +23 -0
- remaind-0.1.0/template-archive/.claude/patterns/recovery.md +75 -0
- remaind-0.1.0/template-archive/.claude/patterns/remediation-phase.md +184 -0
- remaind-0.1.0/template-archive/.claude/patterns/render-review-detection.md +477 -0
- remaind-0.1.0/template-archive/.claude/patterns/resolve-tier-floors.yaml +94 -0
- remaind-0.1.0/template-archive/.claude/patterns/review-verdict-gate.md +188 -0
- remaind-0.1.0/template-archive/.claude/patterns/sanctioned-respawn-flows.json +130 -0
- remaind-0.1.0/template-archive/.claude/patterns/scaffold-images-spec.json +88 -0
- remaind-0.1.0/template-archive/.claude/patterns/security-review.md +197 -0
- remaind-0.1.0/template-archive/.claude/patterns/silent-failure-prevention.md +84 -0
- remaind-0.1.0/template-archive/.claude/patterns/skill-coverage-map.md +102 -0
- remaind-0.1.0/template-archive/.claude/patterns/skill-epilogue.md +128 -0
- remaind-0.1.0/template-archive/.claude/patterns/skill-scoring.md +32 -0
- remaind-0.1.0/template-archive/.claude/patterns/solve-reasoning.md +537 -0
- remaind-0.1.0/template-archive/.claude/patterns/spec-reasoning.md +178 -0
- remaind-0.1.0/template-archive/.claude/patterns/stack-dependency-validation.md +46 -0
- remaind-0.1.0/template-archive/.claude/patterns/stack-promotion.md +61 -0
- remaind-0.1.0/template-archive/.claude/patterns/state-99-epilogue.md +193 -0
- remaind-0.1.0/template-archive/.claude/patterns/state-completion-gate.md +79 -0
- remaind-0.1.0/template-archive/.claude/patterns/state-registry.json +680 -0
- remaind-0.1.0/template-archive/.claude/patterns/step55-evidence-rollout.md +330 -0
- remaind-0.1.0/template-archive/.claude/patterns/systematic-debugging.md +92 -0
- remaind-0.1.0/template-archive/.claude/patterns/tdd.md +142 -0
- remaind-0.1.0/template-archive/.claude/patterns/template-coherence-rules.json +623 -0
- remaind-0.1.0/template-archive/.claude/patterns/verify-report-frontmatter.json +95 -0
- remaind-0.1.0/template-archive/.claude/patterns/verify.md +334 -0
- remaind-0.1.0/template-archive/.claude/patterns/visual-review.md +63 -0
- remaind-0.1.0/template-archive/.claude/patterns/write-guard-hooks.json +30 -0
- remaind-0.1.0/template-archive/.claude/procedures/accessibility-scanner.md +202 -0
- remaind-0.1.0/template-archive/.claude/procedures/behavior-verifier.md +293 -0
- remaind-0.1.0/template-archive/.claude/procedures/change-feature.md +98 -0
- remaind-0.1.0/template-archive/.claude/procedures/change-fix.md +25 -0
- remaind-0.1.0/template-archive/.claude/procedures/change-plans.md +268 -0
- remaind-0.1.0/template-archive/.claude/procedures/change-test.md +41 -0
- remaind-0.1.0/template-archive/.claude/procedures/change-upgrade.md +34 -0
- remaind-0.1.0/template-archive/.claude/procedures/design-consistency-checker.md +130 -0
- remaind-0.1.0/template-archive/.claude/procedures/design-critic.md +399 -0
- remaind-0.1.0/template-archive/.claude/procedures/gate-execution.md +81 -0
- remaind-0.1.0/template-archive/.claude/procedures/google-ads-setup.md +107 -0
- remaind-0.1.0/template-archive/.claude/procedures/plan-exploration.md +132 -0
- remaind-0.1.0/template-archive/.claude/procedures/plan-validation.md +90 -0
- remaind-0.1.0/template-archive/.claude/procedures/scaffold-externals.md +161 -0
- remaind-0.1.0/template-archive/.claude/procedures/scaffold-images.md +433 -0
- remaind-0.1.0/template-archive/.claude/procedures/scaffold-init.md +208 -0
- remaind-0.1.0/template-archive/.claude/procedures/scaffold-landing.md +141 -0
- remaind-0.1.0/template-archive/.claude/procedures/scaffold-libs.md +84 -0
- remaind-0.1.0/template-archive/.claude/procedures/scaffold-pages.md +217 -0
- remaind-0.1.0/template-archive/.claude/procedures/scaffold-setup.md +18 -0
- remaind-0.1.0/template-archive/.claude/procedures/tdd-cycle.md +58 -0
- remaind-0.1.0/template-archive/.claude/procedures/tdd-task-generation.md +60 -0
- remaind-0.1.0/template-archive/.claude/procedures/ux-journeyer.md +153 -0
- remaind-0.1.0/template-archive/.claude/procedures/wire.md +329 -0
- remaind-0.1.0/template-archive/.claude/procedures/worktree-merge-verification.md +30 -0
- remaind-0.1.0/template-archive/.claude/scripts/advance-state.sh +84 -0
- remaind-0.1.0/template-archive/.claude/scripts/agent-gate-check.py +120 -0
- remaind-0.1.0/template-archive/.claude/scripts/aggregate-hook-friction.py +314 -0
- remaind-0.1.0/template-archive/.claude/scripts/append-hook-friction.py +96 -0
- remaind-0.1.0/template-archive/.claude/scripts/archive-gate-verdict.sh +27 -0
- remaind-0.1.0/template-archive/.claude/scripts/audit-lead-deliverable-references.sh +99 -0
- remaind-0.1.0/template-archive/.claude/scripts/audit-sample.py +132 -0
- remaind-0.1.0/template-archive/.claude/scripts/augment-trace.py +402 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-1257-attestation.py +126 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-artifact-presence.py +183 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-cross-artifact-consistency.py +233 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-design-critic-sanctioned.py +73 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-init-context-callers.sh +85 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-observation-artifacts.sh +438 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-slot-intent-drift.py +255 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-worktree-boundary-hook-registered.py +82 -0
- remaind-0.1.0/template-archive/.claude/scripts/check-worktree-ownership-pattern.py +102 -0
- remaind-0.1.0/template-archive/.claude/scripts/codemod-canonical-writer-audit.py +385 -0
- remaind-0.1.0/template-archive/.claude/scripts/codemod-canonical-writer.py +629 -0
- remaind-0.1.0/template-archive/.claude/scripts/compliance-audit.py +877 -0
- remaind-0.1.0/template-archive/.claude/scripts/convergence-report.py +135 -0
- remaind-0.1.0/template-archive/.claude/scripts/derive-graim-manifest.py +570 -0
- remaind-0.1.0/template-archive/.claude/scripts/detect-trace-overwrites.py +195 -0
- remaind-0.1.0/template-archive/.claude/scripts/ensure-supabase-start.sh +185 -0
- remaind-0.1.0/template-archive/.claude/scripts/enumerate-pending-retrospective-findings.py +305 -0
- remaind-0.1.0/template-archive/.claude/scripts/evaluate-hard-gate-predicates.py +285 -0
- remaind-0.1.0/template-archive/.claude/scripts/file-retrospective-finding.py +230 -0
- remaind-0.1.0/template-archive/.claude/scripts/init-context.sh +147 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/README.md +821 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/__init__.py +0 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/auth_routing.py +165 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/behavior_contract_auditor.py +732 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/behavior_contract_builder.py +238 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/canonicalize_bash_command.py +140 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/check-advance-state-invocation.py +136 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/check-archetype-canonical.py +228 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/clean-stale-worktrees.sh +30 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/concern_id.py +39 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/consistency_dom_extract.js +109 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/decompose-bash-chain.py +89 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/derive_pages.py +828 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/derive_slot_intent.py +437 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/design_critic_trace_selector.py +157 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/dossier_builder.py +295 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/dossier_verify.py +93 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/emit-sitemap.py +147 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/gclid_filter.py +52 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/in-worktree.sh +19 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/iterate_cross_classify.py +787 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/iterate_cross_ga.py +481 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/iterate_cross_verdicts.py +369 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/linter/README.md +136 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/linter/__init__.py +0 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/linter/cli.py +13 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/linter/cross_file/__init__.py +0 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/linter/runner.py +4324 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/observer_evidence_families.py +89 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/phash.py +271 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/recurrence_guard_parser.py +314 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/render_context.py +332 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/schema_version_gate.py +142 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/slot_intent_schema.py +221 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/source_identity_validator.py +338 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/source_identity_validator.sh +34 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/stack_knowledge_audit.py +633 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/symptom_canonicalizer.py +68 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/test_decompose_bash_chain.py +156 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/validate_evidence.py +246 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/validate_experiment_yaml.py +174 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/verify_helpers.py +86 -0
- remaind-0.1.0/template-archive/.claude/scripts/lib/write-gate-artifact.sh +119 -0
- remaind-0.1.0/template-archive/.claude/scripts/lifecycle-finalize.sh +766 -0
- remaind-0.1.0/template-archive/.claude/scripts/lifecycle-init.sh +554 -0
- remaind-0.1.0/template-archive/.claude/scripts/lifecycle-lib.sh +89 -0
- remaind-0.1.0/template-archive/.claude/scripts/lifecycle-next.sh +228 -0
- remaind-0.1.0/template-archive/.claude/scripts/lifecycle-worktree-sync.sh +28 -0
- remaind-0.1.0/template-archive/.claude/scripts/merge-design-consistency-checker-traces.py +214 -0
- remaind-0.1.0/template-archive/.claude/scripts/merge-design-critic-traces.py +423 -0
- remaind-0.1.0/template-archive/.claude/scripts/merge-scaffold-pages-traces.py +221 -0
- remaind-0.1.0/template-archive/.claude/scripts/migrate-experiment-yaml.py +141 -0
- remaind-0.1.0/template-archive/.claude/scripts/migrate-image-candidates-v2.py +91 -0
- remaind-0.1.0/template-archive/.claude/scripts/migrate-legacy-traces.py +551 -0
- remaind-0.1.0/template-archive/.claude/scripts/migrate-slot-intent.py +213 -0
- remaind-0.1.0/template-archive/.claude/scripts/migrate-state-registry-lifecycle.py +227 -0
- remaind-0.1.0/template-archive/.claude/scripts/phase-gate.py +174 -0
- remaind-0.1.0/template-archive/.claude/scripts/recurrence-detector.py +492 -0
- remaind-0.1.0/template-archive/.claude/scripts/refine-analysis.py +359 -0
- remaind-0.1.0/template-archive/.claude/scripts/render-fix-log.py +124 -0
- remaind-0.1.0/template-archive/.claude/scripts/reset-state.sh +104 -0
- remaind-0.1.0/template-archive/.claude/scripts/resolve-causal-analyzer.py +557 -0
- remaind-0.1.0/template-archive/.claude/scripts/resolve-snippet-precheck.py +216 -0
- remaind-0.1.0/template-archive/.claude/scripts/resolve-tier-floors.py +336 -0
- remaind-0.1.0/template-archive/.claude/scripts/run-consistency-static-prepass.py +353 -0
- remaind-0.1.0/template-archive/.claude/scripts/run-review-verdict-gate.py +184 -0
- remaind-0.1.0/template-archive/.claude/scripts/scan-template-edits.sh +129 -0
- remaind-0.1.0/template-archive/.claude/scripts/stack-knowledge-audit.sh +45 -0
- remaind-0.1.0/template-archive/.claude/scripts/stop-transient-services.sh +263 -0
- remaind-0.1.0/template-archive/.claude/scripts/sync-verify-to-state-files.sh +126 -0
- remaind-0.1.0/template-archive/.claude/scripts/synthetic-regression-injection.sh +213 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/01-s2-mechanical/expected.md +21 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/01-s2-mechanical/input.md +17 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/02-s1-mechanical/expected.md +15 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/02-s1-mechanical/input.md +12 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/03-bash-interpolated-refused/expected.md +10 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/03-bash-interpolated-refused/input.md +10 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/04-multi-write-refused/expected.md +12 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/04-multi-write-refused/input.md +12 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/05-verify-section-refused/expected.md +9 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/05-verify-section-refused/input.md +9 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/06-already-migrated/expected.md +13 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/06-already-migrated/input.md +13 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/07-non-manifest-path-untouched/expected.md +9 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/07-non-manifest-path-untouched/input.md +9 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/08-multiline-payload-with-function-call/expected.md +18 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/codemod-canonical-writer/08-multiline-payload-with-function-call/input.md +14 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/ga-ads-row-snapshot.json +15 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/issue-1387-repro/experiment.yaml +60 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_baseline/baseline_default.json +14 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_baseline/baseline_strict.json +14 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_baseline/baseline_warn.json +14 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/branch_checkout_propagation_clean/files/.claude/skills/test/state-0-branch.md +13 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/branch_checkout_propagation_clean/rules.json +13 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/branch_checkout_propagation_violation/files/.claude/skills/test/state-0-branch.md +12 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/branch_checkout_propagation_violation/rules.json +13 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/clean_no_findings/rules.json +3 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/consumer_coverage_miss/files/.claude/agents/stale-consumer.md +6 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/consumer_coverage_miss/rules.json +11 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/discover_consumers_drift/files/.claude/agents/declared-consumer.md +7 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/discover_consumers_drift/files/.claude/agents/undeclared-consumer.md +9 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/discover_consumers_drift/rules.json +21 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/field_role_map_violation/files/.claude/agents/test-consumer.md +9 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/field_role_map_violation/rules.json +12 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_bypass_manifest_completeness_clean/files/.claude/patterns/gate-readable-canonical-exemptions.json +10 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_bypass_manifest_completeness_clean/registry.json +1 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_bypass_manifest_completeness_clean/rules.json +17 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_bypass_manifest_completeness_violation/files/.claude/patterns/gate-readable-canonical-exemptions.json +9 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_bypass_manifest_completeness_violation/registry.json +1 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_bypass_manifest_completeness_violation/rules.json +17 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_silent_skip_friction_pairing_clean/files/.claude/hooks/synthetic-hook-frictioned.sh +7 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_silent_skip_friction_pairing_clean/files/.claude/hooks/synthetic-hook-pragma.sh +10 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_silent_skip_friction_pairing_clean/registry.json +1 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_silent_skip_friction_pairing_clean/rules.json +15 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_silent_skip_friction_pairing_violation/files/.claude/hooks/synthetic-hook.sh +25 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_silent_skip_friction_pairing_violation/registry.json +1 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/hook_silent_skip_friction_pairing_violation/rules.json +15 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/state_defer_verify_pairing_clean/files/.claude/skills/test/state-5-foo.md +19 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/state_defer_verify_pairing_clean/registry.json +8 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/state_defer_verify_pairing_clean/rules.json +11 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/state_defer_verify_pairing_violation/files/.claude/skills/test/state-5-foo.md +15 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/state_defer_verify_pairing_violation/registry.json +8 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/fixtures/linter_synthetic/state_defer_verify_pairing_violation/rules.json +11 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/integration/test_verify_stage3_demo_mode.sh +322 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/no-pii-in-fakedoor-track-call.sh +73 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/run-all.sh +96 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_agent_trace_write_gate.py +143 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_agent_trace_write_guard.py +414 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_aggregate_ok_dedup.py +186 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_aoc_coherence_rules.py +713 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_archetype_short_circuit.py +92 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_augment_trace.py +255 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_auth_paths_drift.py +184 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_auth_routing.py +240 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_auth_stack_frontmatter_schema.py +116 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_bash_hook_blockquote_precision.py +216 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_bash_hook_write_operator_binding.py +374 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_behavior_contract_auditor.py +338 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_behavior_contract_builder.py +184 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_behavior_verifier_auth_semantics.py +293 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_canonicalize_bash_command.py +189 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_check_advance_state_invocation.py +134 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_check_init_context_callers.py +196 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_codemod_canonical_writer.py +220 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_codemod_canonical_writer_audit.py +502 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_coherence_rule_claim_must_cite_rule_id.py +220 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_command_head_match.py +186 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_concern_id_stability.py +65 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_consistency_attestation.py +165 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_consistency_merger.py +347 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_consistency_prepass.py +291 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_derive_og_photo_default.py +110 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_derive_page_images.py +377 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_derive_pages.py +260 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_derive_pages_design_critic_subcommand.py +125 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_derive_runtime_gate.py +122 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_derive_slot_intent_decision_table.py +224 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_design_agents_orchestration.py +612 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_design_critic_trace_selector.py +191 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_design_slots_override.py +123 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_detect_skill_for_branch.py +167 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_dossier_builder.py +192 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_dossier_verify.py +117 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_drift_boundary_skip.py +94 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_drift_detection_asymmetric.py +274 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_drift_null_unresolved.py +150 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_dynamic_public_pages.py +142 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_emit_sitemap.py +104 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_evaluate_hard_gate_predicates.py +498 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_field_role_map_rule.py +495 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_fix_ledger_write_guard.py +185 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_forgery_surface.py +125 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_frontmatter_coherence.py +232 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_gate_artifact_bash_write_guard.py +204 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_gate_artifact_writer_enforcement.py +399 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_gclid_filter.py +107 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_given_auth_matcher.py +234 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_hard_gate_predicates.py +528 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_iterate_cross_classify.py +639 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_iterate_cross_ga.py +528 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_iterate_cross_verdicts.py +590 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_lead_fix_path.py +245 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_lib_helper_stack_knowledge_required.py +451 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_lifecycle_finalize_lead_orchestrated_lineage.py +127 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_lifecycle_finalize_post_fix_respawn.py +171 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_lifecycle_init_mode_promotion.py +256 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_linter_parity.py +323 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_linter_validation.py +264 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_markdown_cross_file_line_reference.py +222 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_merge_mvp_aliases.py +257 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_merge_provenance_branch.py +346 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_merge_scaffold_pages_recommendations.py +215 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_migrate_image_candidates_v2.py +140 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_migrate_legacy_traces.py +221 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_migrate_slot_intent_suggestions.py +236 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_no_observation_enforcement_writers_outside_canonical.sh +42 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_observation_evidence_envelope.sh +115 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_pages_no_payload_type_exports.py +202 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_phase_a_forgery_surface.py +614 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_post_completion_respawn_doc_lint.py +198 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_provenance_rules.py +278 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_recovery_run_id_override.py +243 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_recurrence_detector.py +335 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_recurrence_guard_parser.py +363 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_render_context.py +210 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_render_review_demo_404.py +160 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_render_review_detection.py +445 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_render_review_detection_integration.py +262 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_resolve_active_identity.py +158 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_resolve_reviewer.py +139 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_review_verdict_gate.py +269 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_review_verdict_gate_policy_drift.py +196 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_sanctioned_respawn_flows.py +115 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_scaffold_init_writes_slot_intent.py +288 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_skill_agent_gate_post_completion_integration.py +278 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_skipped_fixer_trace.sh +167 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_slice_5b_registry_sweep_walker.sh +62 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_slot_intent_schema.py +228 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_source_identity_validator_hook.py +239 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_state3b_review_method_merge.py +226 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_state_11_build_self_check.py +125 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_state_11a_dynamic_ic.py +197 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_state_3b_verify_partition.py +162 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_state_registry_7b.py +214 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_subsys_c_drift.py +226 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_trace_schema.py +387 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_trace_write_guard.py +317 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_transient_teardown.py +454 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_ux_journeyer_click_vs_goto.py +189 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_validate_behavior_pages.py +305 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_validate_evidence_lib.py +314 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_validate_experiment_yaml.py +126 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_validate_recovery.py +421 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_validator_integration_threshold.py +294 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_validators_meta.py +1002 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_verify_rmg_guard_artifact.py +222 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_verify_semantics.py +269 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_worktree_boundary_gate.py +286 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_write_agent_trace.py +342 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_write_recovery.py +204 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_write_recovery_trace_with_fixes.py +336 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_writer_help_smoke.sh +66 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_writer_identity_override.sh +125 -0
- remaind-0.1.0/template-archive/.claude/scripts/tests/test_writer_validation_matrix.sh +150 -0
- remaind-0.1.0/template-archive/.claude/scripts/update-context-branch.sh +173 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-behavior-pages.py +215 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-image-spec-compliance.py +256 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-observer-evidence-coverage.py +167 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-recovery.sh +188 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-retrospective-completeness.py +212 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-scaffold-recommendations-schema.py +194 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-self-check-score-schema.py +208 -0
- remaind-0.1.0/template-archive/.claude/scripts/validate-step55-evidence.py +384 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-change-solve.py +149 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-deploy-3b.py +48 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-design-critic-post-fix-respawn.py +245 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-lead-orchestrated-spawn-log-lineage.py +128 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-linter.sh +53 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-recurrence-guard.py +269 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-resolve-challenge.py +67 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-resolve-reproduction.py +163 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-review-adversarial.py +24 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-rmg-guard-artifact-in-diff.py +215 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-state-11a-image-count.py +87 -0
- remaind-0.1.0/template-archive/.claude/scripts/verify-state-11c-behavior-audit.py +92 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-agent-trace.sh +468 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-degraded-trace.py +261 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-fix-ledger.py +549 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-observation-evidence.py +229 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-phase-a-repair.sh +310 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-q-score.py +301 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-recovery-trace.sh +409 -0
- remaind-0.1.0/template-archive/.claude/scripts/write-skipped-fixer-trace.sh +348 -0
- remaind-0.1.0/template-archive/.claude/settings.json +269 -0
- remaind-0.1.0/template-archive/.claude/skills/ARCHITECTURE.md +600 -0
- remaind-0.1.0/template-archive/.claude/skills/audit/orchestration.json +11 -0
- remaind-0.1.0/template-archive/.claude/skills/audit/skill.yaml +2 -0
- remaind-0.1.0/template-archive/.claude/skills/audit/state-0-scope-and-baseline.md +265 -0
- remaind-0.1.0/template-archive/.claude/skills/audit/state-1-parallel-analysis.md +350 -0
- remaind-0.1.0/template-archive/.claude/skills/audit/state-2-prioritize-and-output.md +210 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/_scaffold-common.sh +18 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/commit.sh +64 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/scaffold-images.sh +8 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/scaffold-init.sh +8 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/scaffold-landing.sh +29 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/scaffold-libs.sh +8 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/scaffold-pages.sh +29 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/scaffold-setup.sh +8 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/scaffold-wire.sh +14 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/gates/write.sh +87 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/orchestration.json +23 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/skill.yaml +34 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-0-branch-setup.md +54 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-1-read-context.md +28 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-10-design-phase.md +43 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-11-core-scaffold.md +115 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-11a-lib-spawn.md +130 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-11b-lib-verify.md +127 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-11c-page-scaffold.md +197 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-12-externals-decisions.md +147 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-13-merged-validation.md +50 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-13a-analytics-design-check.md +83 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-13b-content-seo-check.md +98 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-13c-bg2-gate.md +41 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-14-wire-phase.md +125 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-14a-bg2-wire-gate.md +40 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-15-scan-and-classify.md +67 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-16-unit-test-generation.md +95 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-17-persist-on-touch.md +54 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-18-commit-and-push.md +64 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-19a-verify-prep.md +35 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-19b-verify-embed.md +38 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-2-resolve-archetype.md +67 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-3-validate-experiment.md +61 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-3a-bg1-gate.md +30 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-3b-duplicate-check.md +76 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-4-check-preconditions.md +69 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-5-present-plan.md +126 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-6-user-approval.md +32 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-7-save-plan.md +87 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-8-preflight.md +174 -0
- remaind-0.1.0/template-archive/.claude/skills/bootstrap/state-9-setup-phase.md +58 -0
- remaind-0.1.0/template-archive/.claude/skills/change/gates/commit.sh +77 -0
- remaind-0.1.0/template-archive/.claude/skills/change/gates/implementer.sh +19 -0
- remaind-0.1.0/template-archive/.claude/skills/change/gates/solve-critic.sh +13 -0
- remaind-0.1.0/template-archive/.claude/skills/change/gates/visual-implementer.sh +19 -0
- remaind-0.1.0/template-archive/.claude/skills/change/orchestration.json +25 -0
- remaind-0.1.0/template-archive/.claude/skills/change/skill.yaml +19 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-0-pre-flight.md +39 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-1-branch-setup.md +25 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-10-implement.md +117 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-11a-verify-prep.md +58 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-11b-verify-embed.md +37 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-12-commit-and-pr.md +97 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-2-read-context.md +126 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-3-solve-reasoning.md +222 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-4-classify.md +59 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-5-check-preconditions.md +73 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-6-present-plan.md +73 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-7-user-approval.md +81 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-8-phase2-preflight.md +73 -0
- remaind-0.1.0/template-archive/.claude/skills/change/state-9-update-specs.md +45 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/orchestration.json +22 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/skill.yaml +4 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-0-pre-flight.md +98 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-1-config-gather.md +89 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-2-user-approval.md +103 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-3a-provision-db.md +65 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-3b-provision-host.md +122 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-3c-deploy-services.md +250 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-4a-health-fix.md +90 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-4b-production-validation.md +264 -0
- remaind-0.1.0/template-archive/.claude/skills/deploy/state-5-manifest-write.md +209 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/gates/commit.sh +26 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/orchestration.json +45 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/skill.yaml +10 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-0-init.md +73 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-1-config-wizard.md +52 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-2-validate-analytics.md +160 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-3-implement.md +192 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-3a-verify-embed.md +38 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-3b-post-verify.md +48 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-4-generate.md +299 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-5-approve-and-ship.md +79 -0
- remaind-0.1.0/template-archive/.claude/skills/distribute/state-6-campaign.md +854 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/orchestration.json +11 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/skill.yaml +11 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-0-read-context.md +56 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-1-gather-data.md +134 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-2-compute-verdicts.md +161 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-3-decision.md +204 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-4-output.md +159 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-c0-read-ads-context.md +86 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-c1-check-health.md +127 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-c2-auto-fix.md +315 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-c3-report.md +77 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-x0-discover-mvps.md +313 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-x0a-scrape-ga-clicks.md +158 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-x1-gather-all-data.md +169 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-x1a-validate-data-integrity.md +144 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-x2-classify-signups.md +204 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-x3-compute-scores.md +100 -0
- remaind-0.1.0/template-archive/.claude/skills/iterate/state-x4-rank-recommend.md +138 -0
- remaind-0.1.0/template-archive/.claude/skills/observe/skill.yaml +2 -0
- remaind-0.1.0/template-archive/.claude/skills/observe/state-0-input-parse.md +63 -0
- remaind-0.1.0/template-archive/.claude/skills/observe/state-1-evaluate-and-file.md +209 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/gates/commit.sh +23 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/gates/resolve-challenger.sh +22 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/gates/solve-critic.sh +13 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/orchestration.json +30 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/skill.yaml +13 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-0-fetch-issues.md +106 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-1-read-context.md +46 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-10-post-fix-review.md +198 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-11-commit-pr.md +142 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-2-triage.md +327 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-3-reproduce.md +234 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-3b-causal-analysis.md +219 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-4-blast-radius.md +53 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-4b-root-cause-clustering.md +74 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-5-fix-design.md +221 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-5b-tier-floors.md +58 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-5d-adversarial-challenge.md +179 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-6-branch-setup.md +33 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-7-implement-fixes.md +162 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-8-final-validation.md +46 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-8b-side-effect-scan.md +54 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-9-save-patterns.md +236 -0
- remaind-0.1.0/template-archive/.claude/skills/resolve/state-9a-graduate-external.md +191 -0
- remaind-0.1.0/template-archive/.claude/skills/retro/orchestration.json +22 -0
- remaind-0.1.0/template-archive/.claude/skills/retro/skill.yaml +1 -0
- remaind-0.1.0/template-archive/.claude/skills/retro/state-0-read-context.md +80 -0
- remaind-0.1.0/template-archive/.claude/skills/retro/state-1-interview.md +60 -0
- remaind-0.1.0/template-archive/.claude/skills/retro/state-2-generate.md +38 -0
- remaind-0.1.0/template-archive/.claude/skills/retro/state-3-file-issue.md +78 -0
- remaind-0.1.0/template-archive/.claude/skills/review/gates/commit.sh +20 -0
- remaind-0.1.0/template-archive/.claude/skills/review/gates/review-challenger.sh +13 -0
- remaind-0.1.0/template-archive/.claude/skills/review/orchestration.json +32 -0
- remaind-0.1.0/template-archive/.claude/skills/review/skill.yaml +11 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-0-read-context.md +72 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-1-baseline-validators.md +84 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-2a-review-scan.md +232 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-2b-filter-findings.md +44 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-2c-adversarial-validation.md +68 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-2d-branch-setup.md +28 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-2e-fix-findings.md +68 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-2f-loop-gate.md +98 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-3-update-inventory.md +34 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-4-final-validation.md +53 -0
- remaind-0.1.0/template-archive/.claude/skills/review/state-6-commit-pr.md +100 -0
- remaind-0.1.0/template-archive/.claude/skills/rollback/orchestration.json +22 -0
- remaind-0.1.0/template-archive/.claude/skills/rollback/skill.yaml +1 -0
- remaind-0.1.0/template-archive/.claude/skills/rollback/state-0-read-context.md +39 -0
- remaind-0.1.0/template-archive/.claude/skills/rollback/state-1-plan.md +55 -0
- remaind-0.1.0/template-archive/.claude/skills/rollback/state-2-user-approval.md +41 -0
- remaind-0.1.0/template-archive/.claude/skills/rollback/state-3-execute.md +93 -0
- remaind-0.1.0/template-archive/.claude/skills/solve/gates/solve-critic.sh +13 -0
- remaind-0.1.0/template-archive/.claude/skills/solve/orchestration.json +11 -0
- remaind-0.1.0/template-archive/.claude/skills/solve/skill.yaml +5 -0
- remaind-0.1.0/template-archive/.claude/skills/solve/state-0-input-parse.md +40 -0
- remaind-0.1.0/template-archive/.claude/skills/solve/state-1-execute.md +185 -0
- remaind-0.1.0/template-archive/.claude/skills/solve/state-2-output.md +52 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/orchestration.json +22 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/skill.yaml +5 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-0-input-parse.md +122 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-1-research.md +87 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-2-hypotheses.md +142 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-3-behaviors.md +78 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-4-golden-path.md +79 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-5-variants.md +75 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-6-stack-funnel.md +217 -0
- remaind-0.1.0/template-archive/.claude/skills/spec/state-7-output.md +233 -0
- remaind-0.1.0/template-archive/.claude/skills/teardown/orchestration.json +22 -0
- remaind-0.1.0/template-archive/.claude/skills/teardown/skill.yaml +4 -0
- remaind-0.1.0/template-archive/.claude/skills/teardown/state-0-pre-flight.md +60 -0
- remaind-0.1.0/template-archive/.claude/skills/teardown/state-1-user-confirmation.md +59 -0
- remaind-0.1.0/template-archive/.claude/skills/teardown/state-2-destroy-resources.md +127 -0
- remaind-0.1.0/template-archive/.claude/skills/teardown/state-3-verify-deletion.md +53 -0
- remaind-0.1.0/template-archive/.claude/skills/teardown/state-4-cleanup.md +100 -0
- remaind-0.1.0/template-archive/.claude/skills/upgrade/skill.yaml +6 -0
- remaind-0.1.0/template-archive/.claude/skills/upgrade/state-0-input-branch.md +104 -0
- remaind-0.1.0/template-archive/.claude/skills/upgrade/state-1-merge-validate.md +143 -0
- remaind-0.1.0/template-archive/.claude/skills/upgrade/state-2-memory-reconcile.md +79 -0
- remaind-0.1.0/template-archive/.claude/skills/upgrade/state-3-commit-pr.md +160 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/_phase1.sh +20 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/accessibility-scanner.sh +4 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/behavior-verifier.sh +4 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/build-info-collector.sh +4 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/design-consistency-checker.sh +61 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/design-critic.sh +36 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/observer.sh +51 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/performance-reporter.sh +4 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/quality-fixer.sh +57 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/security-attacker.sh +4 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/security-defender.sh +4 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/security-fixer.sh +60 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/spec-reviewer.sh +4 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/gates/ux-journeyer.sh +40 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/orchestration.json +12 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/skill.yaml +53 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-0-read-context.md +84 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-1-build-lint-loop.md +105 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-2-phase1-parallel.md +155 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-2a-page-image-map.md +143 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-2b-drift-detection.md +62 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-3a-design-agents.md +575 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-3b-quality-gate.md +305 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-3c-ux-merge.md +142 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-3d-quality-fix.md +208 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-4-security-merge-fix.md +169 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-5-e2e-tests.md +111 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-7a-write-report.md +233 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-7b-compute-qscore.md +172 -0
- remaind-0.1.0/template-archive/.claude/skills/verify/state-8-save-patterns.md +67 -0
- remaind-0.1.0/template-archive/.claude/stacks/TEMPLATE.md +300 -0
- remaind-0.1.0/template-archive/.claude/stacks/ai/anthropic.md +355 -0
- remaind-0.1.0/template-archive/.claude/stacks/analytics/posthog.md +1030 -0
- remaind-0.1.0/template-archive/.claude/stacks/auth/supabase.md +1277 -0
- remaind-0.1.0/template-archive/.claude/stacks/database/sqlite.md +235 -0
- remaind-0.1.0/template-archive/.claude/stacks/database/supabase.md +1347 -0
- remaind-0.1.0/template-archive/.claude/stacks/distribution/email-campaign.md +294 -0
- remaind-0.1.0/template-archive/.claude/stacks/distribution/google-ads.md +398 -0
- remaind-0.1.0/template-archive/.claude/stacks/distribution/meta-ads.md +345 -0
- remaind-0.1.0/template-archive/.claude/stacks/distribution/reddit-organic.md +265 -0
- remaind-0.1.0/template-archive/.claude/stacks/distribution/reddit.md +158 -0
- remaind-0.1.0/template-archive/.claude/stacks/distribution/twitter-organic.md +222 -0
- remaind-0.1.0/template-archive/.claude/stacks/distribution/twitter.md +336 -0
- remaind-0.1.0/template-archive/.claude/stacks/email/resend.md +375 -0
- remaind-0.1.0/template-archive/.claude/stacks/external/.gitkeep +0 -0
- remaind-0.1.0/template-archive/.claude/stacks/external/linear.md +102 -0
- remaind-0.1.0/template-archive/.claude/stacks/external/retell-ai.md +148 -0
- remaind-0.1.0/template-archive/.claude/stacks/external/slack.md +98 -0
- remaind-0.1.0/template-archive/.claude/stacks/external/twilio.md +134 -0
- remaind-0.1.0/template-archive/.claude/stacks/framework/commander.md +187 -0
- remaind-0.1.0/template-archive/.claude/stacks/framework/hono.md +220 -0
- remaind-0.1.0/template-archive/.claude/stacks/framework/nextjs.md +1004 -0
- remaind-0.1.0/template-archive/.claude/stacks/framework/virtuals-acp.md +257 -0
- remaind-0.1.0/template-archive/.claude/stacks/hosting/railway.md +232 -0
- remaind-0.1.0/template-archive/.claude/stacks/hosting/vercel.md +499 -0
- remaind-0.1.0/template-archive/.claude/stacks/images/fal.md +542 -0
- remaind-0.1.0/template-archive/.claude/stacks/notifications/slack.md +98 -0
- remaind-0.1.0/template-archive/.claude/stacks/payment/stripe.md +518 -0
- remaind-0.1.0/template-archive/.claude/stacks/project-management/linear.md +106 -0
- remaind-0.1.0/template-archive/.claude/stacks/surface/co-located.md +116 -0
- remaind-0.1.0/template-archive/.claude/stacks/surface/detached.md +84 -0
- remaind-0.1.0/template-archive/.claude/stacks/surface/none.md +28 -0
- remaind-0.1.0/template-archive/.claude/stacks/telephony/twilio.md +134 -0
- remaind-0.1.0/template-archive/.claude/stacks/testing/playwright.md +1053 -0
- remaind-0.1.0/template-archive/.claude/stacks/testing/vitest.md +340 -0
- remaind-0.1.0/template-archive/.claude/stacks/ui/shadcn.md +865 -0
- remaind-0.1.0/template-archive/.claude/stacks/voice/retell-ai.md +148 -0
- remaind-0.1.0/template-archive/.claude/template-owned-dirs.txt +29 -0
- remaind-0.1.0/template-archive/.claude/templates/experiment-yaml.md +458 -0
- remaind-0.1.0/template-archive/.github/ISSUE_TEMPLATE/retro.yml +83 -0
- remaind-0.1.0/template-archive/.github/PULL_REQUEST_TEMPLATE.md +46 -0
- remaind-0.1.0/template-archive/.github/workflows/ci.yml +371 -0
- remaind-0.1.0/template-archive/.github/workflows/falsification-tests.yml +46 -0
- remaind-0.1.0/template-archive/.github/workflows/stack-knowledge-graduation.yml +30 -0
- remaind-0.1.0/template-archive/.github/workflows/stack-knowledge-nightly.yml +29 -0
- remaind-0.1.0/template-archive/.github/workflows/stack-knowledge-validate.yml +46 -0
- remaind-0.1.0/template-archive/.github/workflows/state-consistency.yml +42 -0
- remaind-0.1.0/template-archive/.gitleaks.toml +17 -0
- remaind-0.1.0/template-archive/.runs/.gitkeep +0 -0
- remaind-0.1.0/template-archive/CLAUDE.md +157 -0
- remaind-0.1.0/template-archive/Makefile +312 -0
- remaind-0.1.0/template-archive/README.md +260 -0
- remaind-0.1.0/template-archive/docs/CONVENTIONS.md +354 -0
- remaind-0.1.0/template-archive/docs/assayer-product-design.md +2228 -0
- remaind-0.1.0/template-archive/docs/assayer-session-prompts.md +4459 -0
- remaind-0.1.0/template-archive/docs/audit-prompt.md +79 -0
- remaind-0.1.0/template-archive/docs/cp1-report.md +106 -0
- remaind-0.1.0/template-archive/docs/google-ads-campaign-playbook.md +205 -0
- remaind-0.1.0/template-archive/docs/mvp-budget-playbook.md +700 -0
- remaind-0.1.0/template-archive/docs/portfolio-distribution-design.md +569 -0
- remaind-0.1.0/template-archive/docs/prerequisites.md +56 -0
- remaind-0.1.0/template-archive/docs/prompts/step1-update-ux-design.md +142 -0
- remaind-0.1.0/template-archive/docs/prompts/step2-update-product-design.md +410 -0
- remaind-0.1.0/template-archive/docs/prompts/step3-update-session-prompts.md +439 -0
- remaind-0.1.0/template-archive/docs/review-future-work.md +44 -0
- remaind-0.1.0/template-archive/docs/team-ads-policy.md +62 -0
- remaind-0.1.0/template-archive/docs/technical-reference.md +190 -0
- remaind-0.1.0/template-archive/docs/troubleshooting.md +105 -0
- remaind-0.1.0/template-archive/docs/ux-design.md +2532 -0
- remaind-0.1.0/template-archive/docs/world-champion-plan.md +1018 -0
- remaind-0.1.0/template-archive/experiment/EVENTS.yaml +55 -0
- remaind-0.1.0/template-archive/experiment/ads.example.yaml +254 -0
- remaind-0.1.0/template-archive/experiment/experiment.example.yaml +226 -0
- remaind-0.1.0/template-archive/experiment/experiment.yaml +154 -0
- remaind-0.1.0/template-archive/experiment/iterate-cross-config.example.yaml +134 -0
- remaind-0.1.0/template-archive/experiment/retro-template.md +62 -0
- remaind-0.1.0/template-archive/run-skill.sh +169 -0
- remaind-0.1.0/template-archive/scripts/auto-migrate.mjs +61 -0
- remaind-0.1.0/template-archive/scripts/bakeoff/README.md +22 -0
- remaind-0.1.0/template-archive/scripts/bakeoff/SCORING.md +38 -0
- remaind-0.1.0/template-archive/scripts/bakeoff/package-lock.json +631 -0
- remaind-0.1.0/template-archive/scripts/bakeoff/package.json +18 -0
- remaind-0.1.0/template-archive/scripts/bakeoff/ping.ts +35 -0
- remaind-0.1.0/template-archive/scripts/bakeoff/run.ts +455 -0
- remaind-0.1.0/template-archive/scripts/bakeoff/tsconfig.json +13 -0
- remaind-0.1.0/template-archive/scripts/check-inventory.md +162 -0
- remaind-0.1.0/template-archive/scripts/ci-check-graduation-atomicity.py +211 -0
- remaind-0.1.0/template-archive/scripts/ci-check-stack-knowledge.py +63 -0
- remaind-0.1.0/template-archive/scripts/conftest.py +138 -0
- remaind-0.1.0/template-archive/scripts/consistency-check.sh +791 -0
- remaind-0.1.0/template-archive/scripts/init-trace.py +65 -0
- remaind-0.1.0/template-archive/scripts/lib/__init__.py +0 -0
- remaind-0.1.0/template-archive/scripts/lib/stack_knowledge_parser.py +195 -0
- remaind-0.1.0/template-archive/scripts/lint-verification-snippets.py +113 -0
- remaind-0.1.0/template-archive/scripts/migrate-known-issues.py +121 -0
- remaind-0.1.0/template-archive/scripts/print-stack-knowledge-files.py +27 -0
- remaind-0.1.0/template-archive/scripts/q-score.py +232 -0
- remaind-0.1.0/template-archive/scripts/scoped-review-prompt.md +185 -0
- remaind-0.1.0/template-archive/scripts/smoke-test-phase2.sh +282 -0
- remaind-0.1.0/template-archive/scripts/smoke-test-phase3.sh +461 -0
- remaind-0.1.0/template-archive/scripts/sync-archetype-summaries.py +299 -0
- remaind-0.1.0/template-archive/scripts/test-template-coherence.sh +84 -0
- remaind-0.1.0/template-archive/scripts/test_consistency_check.py +501 -0
- remaind-0.1.0/template-archive/scripts/test_resolve_causal_analyzer.py +100 -0
- remaind-0.1.0/template-archive/scripts/test_stack_knowledge_parser.py +348 -0
- remaind-0.1.0/template-archive/scripts/test_state_99_epilogue.py +297 -0
- remaind-0.1.0/template-archive/scripts/test_validate_experiment.py +194 -0
- remaind-0.1.0/template-archive/scripts/test_validate_frontmatter.py +360 -0
- remaind-0.1.0/template-archive/scripts/test_validate_registry.py +458 -0
- remaind-0.1.0/template-archive/scripts/test_validate_semantics.py +1105 -0
- remaind-0.1.0/template-archive/scripts/validate-convergence-config.py +95 -0
- remaind-0.1.0/template-archive/scripts/validate-events.py +171 -0
- remaind-0.1.0/template-archive/scripts/validate-experiment.py +709 -0
- remaind-0.1.0/template-archive/scripts/validate-frontmatter.py +376 -0
- remaind-0.1.0/template-archive/scripts/validate-semantics.py +292 -0
- remaind-0.1.0/template-archive/scripts/validate-stack-knowledge.py +144 -0
- remaind-0.1.0/template-archive/scripts/validators/__init__.py +9 -0
- remaind-0.1.0/template-archive/scripts/validators/_analytics.py +240 -0
- remaind-0.1.0/template-archive/scripts/validators/_ci_templates.py +174 -0
- remaind-0.1.0/template-archive/scripts/validators/_fixtures.py +509 -0
- remaind-0.1.0/template-archive/scripts/validators/_misc.py +418 -0
- remaind-0.1.0/template-archive/scripts/validators/_prose_sync.py +268 -0
- remaind-0.1.0/template-archive/scripts/validators/_skill_content.py +765 -0
- remaind-0.1.0/template-archive/scripts/validators/_stack_deps.py +461 -0
- remaind-0.1.0/template-archive/scripts/validators/_utils.py +128 -0
- remaind-0.1.0/template-archive/scripts/verify-local.sh +175 -0
- remaind-0.1.0/tests/__init__.py +0 -0
- remaind-0.1.0/tests/migrations/__init__.py +0 -0
- remaind-0.1.0/tests/migrations/test_adapter.py +116 -0
- remaind-0.1.0/tests/migrations/test_runner.py +112 -0
- remaind-0.1.0/tests/test_artifacts.py +47 -0
- remaind-0.1.0/tests/test_atomic.py +54 -0
- remaind-0.1.0/tests/test_compact_command.py +234 -0
- remaind-0.1.0/tests/test_compaction.py +90 -0
- remaind-0.1.0/tests/test_compactor.py +127 -0
- remaind-0.1.0/tests/test_db.py +266 -0
- remaind-0.1.0/tests/test_events.py +157 -0
- remaind-0.1.0/tests/test_handover.py +36 -0
- remaind-0.1.0/tests/test_handover_writer.py +47 -0
- remaind-0.1.0/tests/test_init.py +107 -0
- remaind-0.1.0/tests/test_jsonl.py +46 -0
- remaind-0.1.0/tests/test_redaction.py +90 -0
- remaind-0.1.0/tests/test_resume_command.py +98 -0
- remaind-0.1.0/tests/test_resume_gate.py +158 -0
- remaind-0.1.0/tests/test_resume_packet.py +153 -0
- remaind-0.1.0/tests/test_rollback.py +109 -0
- remaind-0.1.0/tests/test_rollback_command.py +144 -0
- remaind-0.1.0/tests/test_state_writer.py +93 -0
- remaind-0.1.0/tests/test_status.py +166 -0
- remaind-0.1.0/tests/test_thresholds.py +57 -0
- remaind-0.1.0/tests/test_tokens.py +54 -0
- remaind-0.1.0/tests/test_ulid.py +56 -0
- remaind-0.1.0/tests/test_validate.py +79 -0
- remaind-0.1.0/tests/test_validator.py +197 -0
- remaind-0.1.0/web/.gitignore +41 -0
- remaind-0.1.0/web/app/favicon.ico +0 -0
- remaind-0.1.0/web/app/globals.css +26 -0
- remaind-0.1.0/web/app/layout.tsx +53 -0
- remaind-0.1.0/web/app/page.tsx +417 -0
- remaind-0.1.0/web/app/providers.tsx +35 -0
- remaind-0.1.0/web/app/robots.ts +8 -0
- remaind-0.1.0/web/app/sitemap.ts +12 -0
- remaind-0.1.0/web/eslint.config.mjs +18 -0
- remaind-0.1.0/web/lib/analytics.ts +42 -0
- remaind-0.1.0/web/next.config.ts +7 -0
- remaind-0.1.0/web/package-lock.json +7037 -0
- remaind-0.1.0/web/package.json +28 -0
- remaind-0.1.0/web/postcss.config.mjs +7 -0
- remaind-0.1.0/web/public/file.svg +1 -0
- remaind-0.1.0/web/public/globe.svg +1 -0
- remaind-0.1.0/web/public/llms.txt +35 -0
- remaind-0.1.0/web/public/next.svg +1 -0
- remaind-0.1.0/web/public/vercel.svg +1 -0
- remaind-0.1.0/web/public/window.svg +1 -0
- remaind-0.1.0/web/tsconfig.json +34 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
name: tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
lint:
|
|
15
|
+
name: ruff
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
cache: pip
|
|
23
|
+
cache-dependency-path: pyproject.toml
|
|
24
|
+
- run: |
|
|
25
|
+
python -m pip install --upgrade pip
|
|
26
|
+
pip install -e ".[dev]"
|
|
27
|
+
- run: ruff check src tests
|
|
28
|
+
|
|
29
|
+
typecheck:
|
|
30
|
+
name: mypy
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
- uses: actions/setup-python@v5
|
|
35
|
+
with:
|
|
36
|
+
python-version: "3.12"
|
|
37
|
+
cache: pip
|
|
38
|
+
cache-dependency-path: pyproject.toml
|
|
39
|
+
- run: |
|
|
40
|
+
python -m pip install --upgrade pip
|
|
41
|
+
pip install -e ".[dev]"
|
|
42
|
+
- run: mypy
|
|
43
|
+
|
|
44
|
+
pytest:
|
|
45
|
+
name: pytest (py${{ matrix.python-version }})
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
strategy:
|
|
48
|
+
fail-fast: false
|
|
49
|
+
matrix:
|
|
50
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
|
|
54
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
55
|
+
uses: actions/setup-python@v5
|
|
56
|
+
with:
|
|
57
|
+
python-version: ${{ matrix.python-version }}
|
|
58
|
+
cache: pip
|
|
59
|
+
cache-dependency-path: pyproject.toml
|
|
60
|
+
|
|
61
|
+
- name: Install package + dev extras
|
|
62
|
+
run: |
|
|
63
|
+
python -m pip install --upgrade pip
|
|
64
|
+
pip install -e ".[dev]"
|
|
65
|
+
|
|
66
|
+
- name: Run pytest
|
|
67
|
+
run: python -m pytest -q
|
|
68
|
+
|
|
69
|
+
build:
|
|
70
|
+
name: wheel + sdist build
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
steps:
|
|
73
|
+
- uses: actions/checkout@v4
|
|
74
|
+
|
|
75
|
+
- name: Set up Python
|
|
76
|
+
uses: actions/setup-python@v5
|
|
77
|
+
with:
|
|
78
|
+
python-version: "3.12"
|
|
79
|
+
|
|
80
|
+
- name: Build sdist + wheel
|
|
81
|
+
run: |
|
|
82
|
+
python -m pip install --upgrade pip build
|
|
83
|
+
python -m build --sdist --wheel
|
|
84
|
+
ls -la dist/
|
|
85
|
+
|
|
86
|
+
- name: Smoke-install the built wheel
|
|
87
|
+
run: |
|
|
88
|
+
python -m venv /tmp/install-check
|
|
89
|
+
/tmp/install-check/bin/pip install dist/*.whl
|
|
90
|
+
/tmp/install-check/bin/remaind --version
|
|
91
|
+
|
|
92
|
+
- name: Upload artifacts
|
|
93
|
+
uses: actions/upload-artifact@v4
|
|
94
|
+
with:
|
|
95
|
+
name: dist
|
|
96
|
+
path: dist/
|
|
97
|
+
retention-days: 7
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
# Manual-dispatch only for now. Before the first run, create the project on
|
|
4
|
+
# PyPI and configure a Trusted Publisher pointing at:
|
|
5
|
+
# owner/repo: magpiexyz-lab/Remaind
|
|
6
|
+
# workflow: release.yml
|
|
7
|
+
# environment: pypi
|
|
8
|
+
# Once that's done, run this workflow from the Actions tab with the tag to
|
|
9
|
+
# publish. A future change can add `release: { types: [published] }` to the
|
|
10
|
+
# trigger so tagged releases publish automatically.
|
|
11
|
+
|
|
12
|
+
on:
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
inputs:
|
|
15
|
+
ref:
|
|
16
|
+
description: "Git tag to build and publish (e.g. v0.1.0)"
|
|
17
|
+
required: true
|
|
18
|
+
default: "v0.1.0"
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
build:
|
|
22
|
+
name: build sdist + wheel
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
with:
|
|
27
|
+
ref: ${{ inputs.ref }}
|
|
28
|
+
|
|
29
|
+
- uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.12"
|
|
32
|
+
|
|
33
|
+
- name: Build
|
|
34
|
+
run: |
|
|
35
|
+
python -m pip install --upgrade pip build
|
|
36
|
+
python -m build --sdist --wheel
|
|
37
|
+
|
|
38
|
+
- name: Verify the wheel installs and runs
|
|
39
|
+
run: |
|
|
40
|
+
python -m venv /tmp/release-check
|
|
41
|
+
/tmp/release-check/bin/pip install dist/*.whl
|
|
42
|
+
/tmp/release-check/bin/remaind --version
|
|
43
|
+
|
|
44
|
+
- uses: actions/upload-artifact@v4
|
|
45
|
+
with:
|
|
46
|
+
name: dist
|
|
47
|
+
path: dist/
|
|
48
|
+
|
|
49
|
+
publish:
|
|
50
|
+
name: publish to PyPI
|
|
51
|
+
needs: build
|
|
52
|
+
runs-on: ubuntu-latest
|
|
53
|
+
environment: pypi
|
|
54
|
+
permissions:
|
|
55
|
+
id-token: write # required for PyPI Trusted Publishing
|
|
56
|
+
steps:
|
|
57
|
+
- uses: actions/download-artifact@v4
|
|
58
|
+
with:
|
|
59
|
+
name: dist
|
|
60
|
+
path: dist/
|
|
61
|
+
|
|
62
|
+
- name: Publish
|
|
63
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
remaind-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.pyc
|
|
4
|
+
*.pyo
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
.mypy_cache/
|
|
8
|
+
.venv/
|
|
9
|
+
venv/
|
|
10
|
+
dist/
|
|
11
|
+
build/
|
|
12
|
+
*.egg-info/
|
|
13
|
+
.coverage
|
|
14
|
+
.coverage.*
|
|
15
|
+
htmlcov/
|
|
16
|
+
|
|
17
|
+
# Remaind runtime state (created by `remaind init`; do not commit)
|
|
18
|
+
.context/active/resume_packet.md
|
|
19
|
+
.context/active/history/
|
|
20
|
+
.context/db/
|
|
21
|
+
.context/artifacts/
|
|
22
|
+
|
|
23
|
+
# Environment + secrets
|
|
24
|
+
.env
|
|
25
|
+
.env.local
|
|
26
|
+
.env.*.local
|
|
27
|
+
*.key
|
|
28
|
+
*.pem
|
|
29
|
+
credentials*
|
|
30
|
+
*.secret
|
|
31
|
+
*.token
|
|
32
|
+
service-account*.json
|
|
33
|
+
|
|
34
|
+
# OS / IDE
|
|
35
|
+
.DS_Store
|
|
36
|
+
Thumbs.db
|
|
37
|
+
.vscode/
|
|
38
|
+
.idea/
|
|
39
|
+
*.swp
|
|
40
|
+
*.swo
|
|
41
|
+
*~
|
|
42
|
+
|
|
43
|
+
# Debug logs
|
|
44
|
+
*.log
|
remaind-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Experiment Template Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
remaind-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: remaind
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Durable context for long-running agents.
|
|
5
|
+
Project-URL: Homepage, https://github.com/magpiexyz-lab/Remaind
|
|
6
|
+
Project-URL: Repository, https://github.com/magpiexyz-lab/Remaind
|
|
7
|
+
Author: Magpie Labs
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: agents,compaction,context,handover,ledger
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Requires-Dist: jsonschema>=4.18
|
|
21
|
+
Requires-Dist: pyyaml>=6.0
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
24
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
|
|
25
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
26
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
27
|
+
Requires-Dist: types-jsonschema>=4.18; extra == 'dev'
|
|
28
|
+
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# Remaind
|
|
32
|
+
|
|
33
|
+
[](https://github.com/magpiexyz-lab/Remaind/actions/workflows/ci.yml)
|
|
34
|
+
[](#)
|
|
35
|
+
[](LICENSE)
|
|
36
|
+
|
|
37
|
+
**Durable context for long-running agents.**
|
|
38
|
+
|
|
39
|
+
Remaind is a local-first context ledger, compaction pipeline, and resume
|
|
40
|
+
substrate for AI agents. It preserves the meaningful state of an agent run
|
|
41
|
+
across context resets: a future agent can start with a clean model context,
|
|
42
|
+
load Remaind's local state, understand what happened before, know what must
|
|
43
|
+
happen next, and continue safely without asking the user to reconstruct the
|
|
44
|
+
work.
|
|
45
|
+
|
|
46
|
+
Remaind is not a wiki — it is a **machine-readable and human-readable
|
|
47
|
+
continuity layer**: raw event ledger, structured state, compact handover,
|
|
48
|
+
searchable memory, structured validation, safe rollback, and a mechanical
|
|
49
|
+
resume gate.
|
|
50
|
+
|
|
51
|
+
## Install
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
git clone https://github.com/magpiexyz-lab/Remaind.git
|
|
55
|
+
cd Remaind
|
|
56
|
+
python3 -m venv .venv
|
|
57
|
+
.venv/bin/pip install -e ".[dev]"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Requires Python ≥ 3.11.
|
|
61
|
+
|
|
62
|
+
## Quick start
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
# Bootstrap a .context/ in the current directory.
|
|
66
|
+
remaind init
|
|
67
|
+
|
|
68
|
+
# Inspect what's there.
|
|
69
|
+
remaind validate
|
|
70
|
+
remaind status
|
|
71
|
+
|
|
72
|
+
# After work happens (events appended by your agent harness),
|
|
73
|
+
# compact when token band climbs.
|
|
74
|
+
remaind compact
|
|
75
|
+
|
|
76
|
+
# Build a resume packet for a fresh agent run.
|
|
77
|
+
remaind resume --next-tool deploy_prod
|
|
78
|
+
|
|
79
|
+
# Roll back if something went wrong.
|
|
80
|
+
remaind rollback --to 2026-05-14T03:54:33Z
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## What lives in `.context/`
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
.context/
|
|
87
|
+
├── README.md
|
|
88
|
+
├── CONTRACT.md # the contract — read this first
|
|
89
|
+
├── active/
|
|
90
|
+
│ ├── state.json # derived working state (atomic replace)
|
|
91
|
+
│ ├── handover.md # compact continuity document (atomic replace)
|
|
92
|
+
│ └── (resume_packet.md, history/ — runtime, git-ignored)
|
|
93
|
+
├── logs/
|
|
94
|
+
│ └── events.jsonl # append-only raw timeline (source of truth)
|
|
95
|
+
├── schemas/
|
|
96
|
+
│ ├── event.schema.json # JSON Schema Draft 2020-12
|
|
97
|
+
│ ├── state.schema.json
|
|
98
|
+
│ ├── memory.schema.json
|
|
99
|
+
│ ├── validation.schema.json
|
|
100
|
+
│ ├── thresholds.yaml # 40k/60k/70k/80k band math
|
|
101
|
+
│ ├── redaction.yaml # 9 default secret patterns
|
|
102
|
+
│ ├── tools.yaml # mechanical risk flags
|
|
103
|
+
│ └── migrations/{state,events}/
|
|
104
|
+
└── (db/context.sqlite, artifacts/ — runtime, git-ignored)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Authority order
|
|
108
|
+
|
|
109
|
+
When sources disagree, lower wins:
|
|
110
|
+
|
|
111
|
+
1. Latest explicit user instruction
|
|
112
|
+
2. Raw event log (`logs/events.jsonl`)
|
|
113
|
+
3. `active/state.json`
|
|
114
|
+
4. `active/handover.md`
|
|
115
|
+
5. Derived memories
|
|
116
|
+
|
|
117
|
+
A stale summary or memory MUST NOT override a newer user instruction.
|
|
118
|
+
|
|
119
|
+
## Commands
|
|
120
|
+
|
|
121
|
+
| Command | What it does |
|
|
122
|
+
|---|---|
|
|
123
|
+
| `remaind init` | Bootstrap `.context/`; `--force` backs up existing |
|
|
124
|
+
| `remaind validate` | Walk the v1 checklist (structure, schemas, events, SQLite) |
|
|
125
|
+
| `remaind status [--json]` | State + thresholds + event counts + compaction recommendation |
|
|
126
|
+
| `remaind compact` | Run the compaction pipeline, gated by structured validation |
|
|
127
|
+
| `remaind resume [--next-tool TOOL]` | Build a resume packet; consult the resume gate |
|
|
128
|
+
| `remaind rollback --to <ts>` | Restore derived files from history; raw log untouched |
|
|
129
|
+
|
|
130
|
+
## Architecture
|
|
131
|
+
|
|
132
|
+
| Phase | Subject |
|
|
133
|
+
|---|---|
|
|
134
|
+
| 1 | Frozen contract — schemas, configs, layout |
|
|
135
|
+
| 2 | Migration interfaces — state migrations + event adapters (Protocols) |
|
|
136
|
+
| 3 | `init` + `validate` + schema/config loaders + JSONL streaming |
|
|
137
|
+
| 4 | Redaction engine + content-addressed artifact store + append-only event writer |
|
|
138
|
+
| 5 | Atomic state/handover writes + history snapshots + threshold band recompute |
|
|
139
|
+
| 6 | `status` human/JSON inspector |
|
|
140
|
+
| 7 | SQLite memory + FTS5 (memories, memories_fts, events_index) |
|
|
141
|
+
| 8 | `chars/4` token estimator + compaction-needed surface |
|
|
142
|
+
| 9 | Source-event selection + reference compactor |
|
|
143
|
+
| 10 | Structured compaction validator (reject-on-any-false) |
|
|
144
|
+
| 11 | Resume packet builder + mechanical resume gate |
|
|
145
|
+
| 12 | Rollback (restores derived files; raw log untouched) |
|
|
146
|
+
|
|
147
|
+
## V1 non-goals
|
|
148
|
+
|
|
149
|
+
No vector search, no multi-writer semantics, no cross-project global user
|
|
150
|
+
memory, no procedural memory, no remote sync, no hosted UI, no
|
|
151
|
+
provider-managed conversation state as a dependency, no destructive raw-log
|
|
152
|
+
migration.
|
|
153
|
+
|
|
154
|
+
## Hard rules
|
|
155
|
+
|
|
156
|
+
- Do not rewrite `events.jsonl`.
|
|
157
|
+
- Do not let summaries become source of truth.
|
|
158
|
+
- Do not store secrets in raw logs.
|
|
159
|
+
- Do not store huge outputs inline (threshold: 4096 bytes).
|
|
160
|
+
- Do not allow stale memory to override latest user instruction.
|
|
161
|
+
- Do not accept compaction without structured validation.
|
|
162
|
+
- Do not mutate files on resume if the resume packet is contradictory or unsafe.
|
|
163
|
+
|
|
164
|
+
## Tests
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
.venv/bin/python -m pytest -q
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
177 tests covering every phase. Adding a feature? Add a test.
|
|
171
|
+
|
|
172
|
+
## License
|
|
173
|
+
|
|
174
|
+
MIT — see [LICENSE](LICENSE).
|
remaind-0.1.0/README.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Remaind
|
|
2
|
+
|
|
3
|
+
[](https://github.com/magpiexyz-lab/Remaind/actions/workflows/ci.yml)
|
|
4
|
+
[](#)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
**Durable context for long-running agents.**
|
|
8
|
+
|
|
9
|
+
Remaind is a local-first context ledger, compaction pipeline, and resume
|
|
10
|
+
substrate for AI agents. It preserves the meaningful state of an agent run
|
|
11
|
+
across context resets: a future agent can start with a clean model context,
|
|
12
|
+
load Remaind's local state, understand what happened before, know what must
|
|
13
|
+
happen next, and continue safely without asking the user to reconstruct the
|
|
14
|
+
work.
|
|
15
|
+
|
|
16
|
+
Remaind is not a wiki — it is a **machine-readable and human-readable
|
|
17
|
+
continuity layer**: raw event ledger, structured state, compact handover,
|
|
18
|
+
searchable memory, structured validation, safe rollback, and a mechanical
|
|
19
|
+
resume gate.
|
|
20
|
+
|
|
21
|
+
## Install
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
git clone https://github.com/magpiexyz-lab/Remaind.git
|
|
25
|
+
cd Remaind
|
|
26
|
+
python3 -m venv .venv
|
|
27
|
+
.venv/bin/pip install -e ".[dev]"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Requires Python ≥ 3.11.
|
|
31
|
+
|
|
32
|
+
## Quick start
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
# Bootstrap a .context/ in the current directory.
|
|
36
|
+
remaind init
|
|
37
|
+
|
|
38
|
+
# Inspect what's there.
|
|
39
|
+
remaind validate
|
|
40
|
+
remaind status
|
|
41
|
+
|
|
42
|
+
# After work happens (events appended by your agent harness),
|
|
43
|
+
# compact when token band climbs.
|
|
44
|
+
remaind compact
|
|
45
|
+
|
|
46
|
+
# Build a resume packet for a fresh agent run.
|
|
47
|
+
remaind resume --next-tool deploy_prod
|
|
48
|
+
|
|
49
|
+
# Roll back if something went wrong.
|
|
50
|
+
remaind rollback --to 2026-05-14T03:54:33Z
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## What lives in `.context/`
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
.context/
|
|
57
|
+
├── README.md
|
|
58
|
+
├── CONTRACT.md # the contract — read this first
|
|
59
|
+
├── active/
|
|
60
|
+
│ ├── state.json # derived working state (atomic replace)
|
|
61
|
+
│ ├── handover.md # compact continuity document (atomic replace)
|
|
62
|
+
│ └── (resume_packet.md, history/ — runtime, git-ignored)
|
|
63
|
+
├── logs/
|
|
64
|
+
│ └── events.jsonl # append-only raw timeline (source of truth)
|
|
65
|
+
├── schemas/
|
|
66
|
+
│ ├── event.schema.json # JSON Schema Draft 2020-12
|
|
67
|
+
│ ├── state.schema.json
|
|
68
|
+
│ ├── memory.schema.json
|
|
69
|
+
│ ├── validation.schema.json
|
|
70
|
+
│ ├── thresholds.yaml # 40k/60k/70k/80k band math
|
|
71
|
+
│ ├── redaction.yaml # 9 default secret patterns
|
|
72
|
+
│ ├── tools.yaml # mechanical risk flags
|
|
73
|
+
│ └── migrations/{state,events}/
|
|
74
|
+
└── (db/context.sqlite, artifacts/ — runtime, git-ignored)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Authority order
|
|
78
|
+
|
|
79
|
+
When sources disagree, lower wins:
|
|
80
|
+
|
|
81
|
+
1. Latest explicit user instruction
|
|
82
|
+
2. Raw event log (`logs/events.jsonl`)
|
|
83
|
+
3. `active/state.json`
|
|
84
|
+
4. `active/handover.md`
|
|
85
|
+
5. Derived memories
|
|
86
|
+
|
|
87
|
+
A stale summary or memory MUST NOT override a newer user instruction.
|
|
88
|
+
|
|
89
|
+
## Commands
|
|
90
|
+
|
|
91
|
+
| Command | What it does |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `remaind init` | Bootstrap `.context/`; `--force` backs up existing |
|
|
94
|
+
| `remaind validate` | Walk the v1 checklist (structure, schemas, events, SQLite) |
|
|
95
|
+
| `remaind status [--json]` | State + thresholds + event counts + compaction recommendation |
|
|
96
|
+
| `remaind compact` | Run the compaction pipeline, gated by structured validation |
|
|
97
|
+
| `remaind resume [--next-tool TOOL]` | Build a resume packet; consult the resume gate |
|
|
98
|
+
| `remaind rollback --to <ts>` | Restore derived files from history; raw log untouched |
|
|
99
|
+
|
|
100
|
+
## Architecture
|
|
101
|
+
|
|
102
|
+
| Phase | Subject |
|
|
103
|
+
|---|---|
|
|
104
|
+
| 1 | Frozen contract — schemas, configs, layout |
|
|
105
|
+
| 2 | Migration interfaces — state migrations + event adapters (Protocols) |
|
|
106
|
+
| 3 | `init` + `validate` + schema/config loaders + JSONL streaming |
|
|
107
|
+
| 4 | Redaction engine + content-addressed artifact store + append-only event writer |
|
|
108
|
+
| 5 | Atomic state/handover writes + history snapshots + threshold band recompute |
|
|
109
|
+
| 6 | `status` human/JSON inspector |
|
|
110
|
+
| 7 | SQLite memory + FTS5 (memories, memories_fts, events_index) |
|
|
111
|
+
| 8 | `chars/4` token estimator + compaction-needed surface |
|
|
112
|
+
| 9 | Source-event selection + reference compactor |
|
|
113
|
+
| 10 | Structured compaction validator (reject-on-any-false) |
|
|
114
|
+
| 11 | Resume packet builder + mechanical resume gate |
|
|
115
|
+
| 12 | Rollback (restores derived files; raw log untouched) |
|
|
116
|
+
|
|
117
|
+
## V1 non-goals
|
|
118
|
+
|
|
119
|
+
No vector search, no multi-writer semantics, no cross-project global user
|
|
120
|
+
memory, no procedural memory, no remote sync, no hosted UI, no
|
|
121
|
+
provider-managed conversation state as a dependency, no destructive raw-log
|
|
122
|
+
migration.
|
|
123
|
+
|
|
124
|
+
## Hard rules
|
|
125
|
+
|
|
126
|
+
- Do not rewrite `events.jsonl`.
|
|
127
|
+
- Do not let summaries become source of truth.
|
|
128
|
+
- Do not store secrets in raw logs.
|
|
129
|
+
- Do not store huge outputs inline (threshold: 4096 bytes).
|
|
130
|
+
- Do not allow stale memory to override latest user instruction.
|
|
131
|
+
- Do not accept compaction without structured validation.
|
|
132
|
+
- Do not mutate files on resume if the resume packet is contradictory or unsafe.
|
|
133
|
+
|
|
134
|
+
## Tests
|
|
135
|
+
|
|
136
|
+
```sh
|
|
137
|
+
.venv/bin/python -m pytest -q
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
177 tests covering every phase. Adding a feature? Add a test.
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
MIT — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling>=1.25"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "remaind"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Durable context for long-running agents."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "Magpie Labs" }]
|
|
13
|
+
keywords = ["agents", "context", "ledger", "compaction", "handover"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3.11",
|
|
20
|
+
"Programming Language :: Python :: 3.12",
|
|
21
|
+
"Programming Language :: Python :: 3.13",
|
|
22
|
+
"Topic :: Software Development :: Libraries",
|
|
23
|
+
]
|
|
24
|
+
dependencies = [
|
|
25
|
+
"jsonschema>=4.18",
|
|
26
|
+
"pyyaml>=6.0",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.optional-dependencies]
|
|
30
|
+
dev = [
|
|
31
|
+
"pytest>=8.0",
|
|
32
|
+
"pytest-cov>=5.0",
|
|
33
|
+
"ruff>=0.6",
|
|
34
|
+
"mypy>=1.10",
|
|
35
|
+
"types-jsonschema>=4.18",
|
|
36
|
+
"types-PyYAML>=6.0",
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
[project.scripts]
|
|
40
|
+
remaind = "remaind.cli:main"
|
|
41
|
+
|
|
42
|
+
[project.urls]
|
|
43
|
+
Homepage = "https://github.com/magpiexyz-lab/Remaind"
|
|
44
|
+
Repository = "https://github.com/magpiexyz-lab/Remaind"
|
|
45
|
+
|
|
46
|
+
[tool.hatch.build.targets.wheel]
|
|
47
|
+
packages = ["src/remaind"]
|
|
48
|
+
# `_templates/` ships automatically as part of the `remaind` package — no
|
|
49
|
+
# force-include needed. Non-Python resources are picked up because hatch
|
|
50
|
+
# walks the whole package directory.
|
|
51
|
+
|
|
52
|
+
[tool.pytest.ini_options]
|
|
53
|
+
minversion = "8.0"
|
|
54
|
+
testpaths = ["tests"]
|
|
55
|
+
addopts = "-ra --strict-markers"
|
|
56
|
+
pythonpath = ["src"]
|
|
57
|
+
|
|
58
|
+
[tool.coverage.run]
|
|
59
|
+
branch = true
|
|
60
|
+
source = ["src/remaind"]
|
|
61
|
+
|
|
62
|
+
[tool.coverage.report]
|
|
63
|
+
exclude_lines = [
|
|
64
|
+
"pragma: no cover",
|
|
65
|
+
"raise NotImplementedError",
|
|
66
|
+
"if TYPE_CHECKING:",
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
[tool.ruff]
|
|
70
|
+
line-length = 100
|
|
71
|
+
target-version = "py311"
|
|
72
|
+
extend-exclude = ["template-archive"]
|
|
73
|
+
|
|
74
|
+
[tool.ruff.lint]
|
|
75
|
+
select = [
|
|
76
|
+
"E", # pycodestyle errors
|
|
77
|
+
"W", # pycodestyle warnings
|
|
78
|
+
"F", # pyflakes
|
|
79
|
+
"I", # isort
|
|
80
|
+
"B", # flake8-bugbear
|
|
81
|
+
"UP", # pyupgrade
|
|
82
|
+
"RUF", # ruff-specific
|
|
83
|
+
]
|
|
84
|
+
ignore = [
|
|
85
|
+
"E501", # line length handled by formatter
|
|
86
|
+
"RUF002", # ambiguous unicode in docstrings (× and — used intentionally)
|
|
87
|
+
]
|
|
88
|
+
|
|
89
|
+
[tool.mypy]
|
|
90
|
+
python_version = "3.11"
|
|
91
|
+
files = ["src/remaind"]
|
|
92
|
+
exclude = "template-archive"
|
|
93
|
+
check_untyped_defs = true
|
|
94
|
+
warn_unused_ignores = true
|
|
95
|
+
warn_redundant_casts = true
|
|
96
|
+
no_implicit_optional = true
|
|
97
|
+
warn_return_any = false # too noisy with JSON-shaped dicts
|
|
98
|
+
strict_equality = true
|