@tech-leads-club/harness-toolkit 0.2.1
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.
- package/CHANGELOG.md +95 -0
- package/LICENSE +84 -0
- package/NOTICE +9 -0
- package/README.md +480 -0
- package/bin/tlc +10 -0
- package/bin/tlc-build +80 -0
- package/bin/tlc-cli.ts +1509 -0
- package/bin/tlc-exec +10 -0
- package/bin/tlc-exec.cmd +4 -0
- package/bin/tlc-exec.d.mts +60 -0
- package/bin/tlc-exec.mjs +248 -0
- package/bin/tlc.cmd +4 -0
- package/bin/tlc.mjs +7 -0
- package/bin/write-user-hooks.d.mts +40 -0
- package/bin/write-user-hooks.mjs +123 -0
- package/capabilities/catalog.json +418 -0
- package/config.example.json +51 -0
- package/dist/compact-before.mjs +7839 -0
- package/dist/doctor.mjs +8263 -0
- package/dist/help-topic.mjs +82 -0
- package/dist/init-project.mjs +993 -0
- package/dist/install-runtime.mjs +969 -0
- package/dist/lessons-cli.mjs +7258 -0
- package/dist/obs-cli.mjs +7025 -0
- package/dist/price-lookup.mjs +221 -0
- package/dist/prompt-submit.mjs +7860 -0
- package/dist/refresh-model-prices.mjs +158 -0
- package/dist/response-after.mjs +7879 -0
- package/dist/run.mjs +7830 -0
- package/dist/session-end.mjs +7937 -0
- package/dist/session-start.mjs +8056 -0
- package/dist/shim.mjs +52 -0
- package/dist/stop.mjs +8494 -0
- package/dist/subagent-start.mjs +7861 -0
- package/dist/subagent-stop.mjs +7851 -0
- package/dist/support.mjs +7045 -0
- package/dist/tlc-cli.mjs +8063 -0
- package/dist/tool-after.mjs +8113 -0
- package/dist/tool-before.mjs +7985 -0
- package/dist/tool-failure.mjs +7850 -0
- package/dist/uninstall-runtime.mjs +1307 -0
- package/docs/architecture.md +270 -0
- package/docs/concepts.md +562 -0
- package/docs/coverage.md +55 -0
- package/docs/decisions/ad-001.md +32 -0
- package/docs/decisions/ad-002.md +51 -0
- package/docs/decisions/ad-003.md +30 -0
- package/docs/decisions/ad-004.md +37 -0
- package/docs/decisions/ad-005.md +36 -0
- package/docs/decisions/ad-006.md +49 -0
- package/docs/decisions/ad-007.md +36 -0
- package/docs/decisions/ad-008.md +54 -0
- package/docs/decisions/ad-009.md +61 -0
- package/docs/decisions/ad-010.md +45 -0
- package/docs/decisions/ad-011.md +59 -0
- package/docs/decisions/ad-012.md +71 -0
- package/docs/decisions/ad-013.md +87 -0
- package/docs/decisions/ad-014.md +56 -0
- package/docs/decisions/ad-015.md +33 -0
- package/docs/decisions/ad-016.md +98 -0
- package/docs/decisions/ad-017.md +65 -0
- package/docs/decisions/ad-018.md +77 -0
- package/docs/decisions/ad-019.md +75 -0
- package/docs/decisions/ad-020.md +88 -0
- package/docs/decisions/ad-021.md +57 -0
- package/docs/decisions/ad-022.md +120 -0
- package/docs/decisions/ad-023.md +87 -0
- package/docs/decisions/ad-024.md +85 -0
- package/docs/decisions/ad-025.md +92 -0
- package/docs/decisions/ad-026.md +131 -0
- package/docs/decisions/ad-027.md +90 -0
- package/docs/decisions/ad-028.md +90 -0
- package/docs/decisions/ad-029.md +73 -0
- package/docs/decisions/ad-030.md +97 -0
- package/docs/decisions/ad-031.md +94 -0
- package/docs/decisions/ad-032.md +83 -0
- package/docs/decisions/ad-033.md +89 -0
- package/docs/decisions/ad-034.md +86 -0
- package/docs/decisions/ad-035.md +86 -0
- package/docs/decisions/ad-036.md +68 -0
- package/docs/decisions/ad-037.md +47 -0
- package/docs/decisions/ad-038.md +52 -0
- package/docs/decisions/ad-039.md +69 -0
- package/docs/decisions/ad-040.md +89 -0
- package/docs/decisions/ad-041.md +98 -0
- package/docs/decisions/ad-042.md +82 -0
- package/docs/decisions/ad-043.md +79 -0
- package/docs/decisions/ad-044.md +61 -0
- package/docs/decisions/ad-045.md +94 -0
- package/docs/decisions/ad-046.md +111 -0
- package/docs/decisions/ad-047.md +96 -0
- package/docs/decisions/ad-048.md +85 -0
- package/docs/decisions/ad-049.md +66 -0
- package/docs/decisions/ad-050.md +94 -0
- package/docs/decisions/ad-051.md +69 -0
- package/docs/decisions/ad-052.md +69 -0
- package/docs/decisions/ad-053.md +78 -0
- package/docs/decisions/ad-054.md +98 -0
- package/docs/decisions/ad-055.md +74 -0
- package/docs/decisions/ad-056.md +85 -0
- package/docs/decisions/ad-057.md +68 -0
- package/docs/decisions/ad-058.md +97 -0
- package/docs/decisions/ad-059.md +82 -0
- package/docs/decisions/ad-060.md +75 -0
- package/docs/decisions/ad-061.md +68 -0
- package/docs/decisions/ad-062.md +72 -0
- package/docs/decisions/ad-063.md +84 -0
- package/docs/decisions/ad-064.md +79 -0
- package/docs/decisions/ad-065.md +81 -0
- package/docs/decisions/ad-066.md +111 -0
- package/docs/decisions/ad-067.md +64 -0
- package/docs/decisions/ad-068.md +79 -0
- package/docs/decisions/ad-069.md +74 -0
- package/docs/decisions/ad-070.md +86 -0
- package/docs/decisions/ad-071.md +93 -0
- package/docs/decisions/ad-072.md +82 -0
- package/docs/decisions/ad-073.md +102 -0
- package/docs/decisions/ad-074.md +91 -0
- package/docs/decisions/ad-075.md +79 -0
- package/docs/decisions/ad-076.md +102 -0
- package/docs/decisions/ad-077.md +94 -0
- package/docs/decisions/ad-078.md +84 -0
- package/docs/decisions/ad-079.md +73 -0
- package/docs/decisions/ad-080.md +86 -0
- package/docs/decisions/ad-081.md +70 -0
- package/docs/decisions/ad-082.md +79 -0
- package/docs/decisions/ad-083.md +88 -0
- package/docs/decisions/index.md +111 -0
- package/docs/diagnose.md +248 -0
- package/docs/index.md +52 -0
- package/docs/init.md +101 -0
- package/docs/lessons.md +294 -0
- package/docs/log.md +139 -0
- package/docs/measure.md +178 -0
- package/docs/providers/claude-code.md +118 -0
- package/docs/providers/cursor.md +110 -0
- package/docs/providers/index.md +71 -0
- package/docs/troubleshooting.md +138 -0
- package/model-aliases.json +12 -0
- package/model-prices.cursor.json +410 -0
- package/model-prices.json +1 -0
- package/package.json +57 -0
- package/skills/harness-init/SKILL.md +241 -0
- package/skills/harness-init/evals/trigger_evals.json +86 -0
- package/skills/harness-init/references/capabilities.md +113 -0
- package/src/contracts/capabilities.ts +30 -0
- package/src/contracts/decision.ts +21 -0
- package/src/contracts/effort.ts +15 -0
- package/src/contracts/harness-event.ts +87 -0
- package/src/contracts/index.ts +6 -0
- package/src/contracts/policy-defaults.ts +14 -0
- package/src/contracts/wiring.ts +20 -0
- package/src/core/attest/attest.service.ts +0 -0
- package/src/core/capability/capability.service.ts +62 -0
- package/src/core/capability/capability.store.ts +51 -0
- package/src/core/capability/capability.types.ts +56 -0
- package/src/core/comment-policy/comment-policy.service.ts +307 -0
- package/src/core/comment-policy/comment-policy.types.ts +6 -0
- package/src/core/comment-policy/comment-resolvability.ts +134 -0
- package/src/core/comment-policy/comment-syntax.catalog.ts +310 -0
- package/src/core/comment-policy/comment-syntax.store.ts +65 -0
- package/src/core/comment-policy/comment-syntax.types.ts +24 -0
- package/src/core/core.facade.ts +461 -0
- package/src/core/duplication/duplication.service.ts +219 -0
- package/src/core/floor/floor.catalog.ts +54 -0
- package/src/core/floor/floor.paths.ts +90 -0
- package/src/core/floor/floor.policy-surface.ts +311 -0
- package/src/core/floor/floor.service.ts +306 -0
- package/src/core/floor/floor.tokenize.ts +179 -0
- package/src/core/floor/floor.verb.ts +28 -0
- package/src/core/floor/index.ts +1 -0
- package/src/core/gate/gate.artifact.ts +157 -0
- package/src/core/gate/gate.command.ts +130 -0
- package/src/core/gate/gate.findings.ts +201 -0
- package/src/core/gate/gate.inputs.ts +0 -0
- package/src/core/gate/gate.lock.ts +283 -0
- package/src/core/gate/gate.service.ts +28 -0
- package/src/core/gate/gate.types.ts +67 -0
- package/src/core/handoff/handoff.service.ts +43 -0
- package/src/core/handoff/handoff.store.ts +59 -0
- package/src/core/handoff/handoff.types.ts +89 -0
- package/src/core/index.ts +52 -0
- package/src/core/integrity/state-seal.ts +81 -0
- package/src/core/lesson/lesson.authored.ts +96 -0
- package/src/core/lesson/lesson.credit.ts +51 -0
- package/src/core/lesson/lesson.garden.ts +283 -0
- package/src/core/lesson/lesson.link.ts +93 -0
- package/src/core/lesson/lesson.score.ts +61 -0
- package/src/core/lesson/lesson.select.ts +209 -0
- package/src/core/lesson/lesson.service.ts +110 -0
- package/src/core/lesson/lesson.store.ts +317 -0
- package/src/core/lesson/lesson.sync.ts +70 -0
- package/src/core/lesson/lesson.types.ts +92 -0
- package/src/core/lesson/lesson.validity.ts +44 -0
- package/src/core/observability/observability.report.ts +326 -0
- package/src/core/observability/observability.service.ts +328 -0
- package/src/core/observability/observability.store.ts +269 -0
- package/src/core/observability/observability.types.ts +193 -0
- package/src/core/observability/observability.why.ts +206 -0
- package/src/core/observe/observe.service.ts +76 -0
- package/src/core/plan/plan.detect.ts +47 -0
- package/src/core/plan/plan.service.ts +81 -0
- package/src/core/plan/plan.types.ts +25 -0
- package/src/core/policy/policy.defaults.ts +103 -0
- package/src/core/policy/policy.guard.ts +34 -0
- package/src/core/policy/policy.integrity.ts +238 -0
- package/src/core/policy/policy.loader.ts +118 -0
- package/src/core/policy/policy.operator.ts +82 -0
- package/src/core/policy/policy.posture.ts +79 -0
- package/src/core/policy/policy.rails.ts +45 -0
- package/src/core/policy/policy.types.ts +157 -0
- package/src/core/presence/presence.service.ts +111 -0
- package/src/core/presence/presence.store.ts +59 -0
- package/src/core/presence/presence.types.ts +9 -0
- package/src/core/release/release.decisions.ts +147 -0
- package/src/core/release/release.seen.ts +38 -0
- package/src/core/shell-policy/shell-policy.service.ts +215 -0
- package/src/core/shell-policy/shell-policy.stall.ts +57 -0
- package/src/core/shell-policy/shell-policy.types.ts +26 -0
- package/src/core/ship/ship.ledger.ts +76 -0
- package/src/core/ship/ship.service.ts +137 -0
- package/src/core/ship/ship.types.ts +19 -0
- package/src/core/stagnation/stagnation.resolution.ts +87 -0
- package/src/core/stagnation/stagnation.service.ts +20 -0
- package/src/core/stagnation/stagnation.store.ts +49 -0
- package/src/core/stagnation/stagnation.types.ts +12 -0
- package/src/core/subagent-policy/subagent-policy.parent-model.ts +202 -0
- package/src/core/subagent-policy/subagent-policy.service.ts +139 -0
- package/src/core/subagent-policy/subagent-policy.types.ts +22 -0
- package/src/core/supply-chain/supply-chain.catalog.ts +51 -0
- package/src/core/supply-chain/supply-chain.service.ts +217 -0
- package/src/core/turn/turn.activity.ts +94 -0
- package/src/core/turn/turn.autopilot.ts +131 -0
- package/src/core/turn/turn.failure-signals.ts +193 -0
- package/src/core/turn/turn.loop-counter.ts +71 -0
- package/src/core/turn/turn.types.ts +14 -0
- package/src/core/untrusted/untrusted.detect.ts +53 -0
- package/src/core/untrusted/untrusted.recall.ts +87 -0
- package/src/core/untrusted/untrusted.service.ts +129 -0
- package/src/core/untrusted/untrusted.store.ts +75 -0
- package/src/core/untrusted/untrusted.types.ts +42 -0
- package/src/entrypoints/compact-before.ts +14 -0
- package/src/entrypoints/prompt-submit.ts +25 -0
- package/src/entrypoints/response-after.ts +60 -0
- package/src/entrypoints/run.ts +179 -0
- package/src/entrypoints/session-end.ts +58 -0
- package/src/entrypoints/session-start.ts +172 -0
- package/src/entrypoints/shim.ts +46 -0
- package/src/entrypoints/stop.ts +876 -0
- package/src/entrypoints/subagent-start.ts +16 -0
- package/src/entrypoints/subagent-stop.ts +32 -0
- package/src/entrypoints/support.ts +182 -0
- package/src/entrypoints/tool-after.ts +111 -0
- package/src/entrypoints/tool-before.ts +186 -0
- package/src/entrypoints/tool-failure.ts +26 -0
- package/src/platform/backoff.ts +49 -0
- package/src/platform/cli-output.ts +30 -0
- package/src/platform/env-scope.ts +22 -0
- package/src/platform/fs-atomic.ts +142 -0
- package/src/platform/fs-jsonl.ts +24 -0
- package/src/platform/git.ts +187 -0
- package/src/platform/paths.ts +80 -0
- package/src/platform/pricing.ts +229 -0
- package/src/platform/process.ts +64 -0
- package/src/platform/sanitize.ts +23 -0
- package/src/platform/screen.ts +46 -0
- package/src/platform/style.ts +103 -0
- package/src/providers/claude/claude.capabilities.ts +25 -0
- package/src/providers/claude/claude.detect.ts +14 -0
- package/src/providers/claude/claude.inbound.ts +252 -0
- package/src/providers/claude/claude.lessons-view.ts +33 -0
- package/src/providers/claude/claude.outbound.ts +65 -0
- package/src/providers/claude/claude.policy-defaults.ts +9 -0
- package/src/providers/claude/claude.transcript.ts +62 -0
- package/src/providers/claude/claude.wiring.ts +245 -0
- package/src/providers/claude/index.ts +17 -0
- package/src/providers/cursor/cursor.capabilities.ts +28 -0
- package/src/providers/cursor/cursor.detect.ts +14 -0
- package/src/providers/cursor/cursor.inbound.ts +203 -0
- package/src/providers/cursor/cursor.lessons-view.ts +30 -0
- package/src/providers/cursor/cursor.outbound.ts +43 -0
- package/src/providers/cursor/cursor.policy-defaults.ts +9 -0
- package/src/providers/cursor/cursor.wiring.ts +214 -0
- package/src/providers/cursor/index.ts +17 -0
- package/src/providers/index.ts +9 -0
- package/src/providers/provider.degrade.ts +152 -0
- package/src/providers/provider.port.ts +20 -0
- package/src/providers/provider.registry.ts +28 -0
- package/tools/doctor.ts +631 -0
- package/tools/help-topic.ts +74 -0
- package/tools/init-project.ts +277 -0
- package/tools/install-runtime.ts +164 -0
- package/tools/lessons-cli.ts +474 -0
- package/tools/obs-cli.ts +175 -0
- package/tools/price-lookup.ts +57 -0
- package/tools/refresh-model-prices.ts +210 -0
- package/tools/test-env.mjs +28 -0
- package/tools/test-env.names.d.mts +1 -0
- package/tools/test-env.names.mjs +14 -0
- package/tools/uninstall-runtime.ts +463 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Generated from `docs/decisions/` — do not edit by hand. Run `node tools/render-changelog.ts`.
|
|
4
|
+
|
|
5
|
+
Each entry is an architectural decision record: what changed, why, what was refused, and what it costs.
|
|
6
|
+
A **Needs your action** line is a change `tlc harness doctor` cannot detect for you; everything else
|
|
7
|
+
doctor reports against your own configuration.
|
|
8
|
+
|
|
9
|
+
## Unreleased
|
|
10
|
+
|
|
11
|
+
- **AD-001** — Optional parent-Fast sticky deny for Task spawns
|
|
12
|
+
- **AD-002** — Provider-neutral naming and layout
|
|
13
|
+
- **AD-003** — No backward compatibility
|
|
14
|
+
- **AD-004** — Ports and adapters with an anti-corruption layer per provider
|
|
15
|
+
- **AD-005** — Local test runner is the gate; CI matrix runs on every push
|
|
16
|
+
- **AD-006** — Windows ships in scope, with CI covering the suite and the build
|
|
17
|
+
- **AD-007** — Vendor check applies to core tests; absence checks do not
|
|
18
|
+
- **AD-008** — Biome + TypeScript in the gate; @types/node pinned to the declared floor
|
|
19
|
+
- **AD-009** — Event kinds are provider-agnostic; capabilities are data, not flags
|
|
20
|
+
- **AD-010** — Shared vocabulary moves to src/contracts/
|
|
21
|
+
- **AD-011** — Vendor-specific data belongs to the provider, not to core
|
|
22
|
+
- **AD-012** — Prefer Bun at runtime, keep dist/ for the Node fallback, ship no binary
|
|
23
|
+
- **AD-013** — Documentation follows the Open Knowledge Format (OKF v0.1)
|
|
24
|
+
- **AD-014** — Claude Code hook payload field paths, pinned
|
|
25
|
+
- **AD-015** — Wiring handler names are the entrypoint filenames
|
|
26
|
+
- **AD-016** — Field semantics, state writers, and the core export surface
|
|
27
|
+
- **AD-017** — The docs gate delegates to the project's tool, and the catalog is the only source of capability metadata
|
|
28
|
+
- **AD-018** — Three rails adopted from an external review, each off by default and declared rather than inferred
|
|
29
|
+
- **AD-019** — A resource is identified by what it resolves to, and a declared capability must be read where it matters
|
|
30
|
+
- **AD-020** — One resolution for the install path, one source for posture, and a config that only advertises what it reads
|
|
31
|
+
- **AD-021** — A gate command that never resolved is a config fault, and a recipe runner does not receive file arguments
|
|
32
|
+
- **AD-022** — The policy surface is a floor rule, detection sits behind interception, and the operator/agent line is structural
|
|
33
|
+
- **AD-023** — One finding per failure, and lesson relevance is recurrence rather than exposure
|
|
34
|
+
- **AD-024** — The gate tells the truth about its own environment, its own lock, and the cause of a failure
|
|
35
|
+
- **AD-025** — Posture governs surfacing only, and each posture has exactly one name
|
|
36
|
+
- **AD-026** — An interruption is worth what it costs: narrower asks, a deadline on questions, and a rate the operator can see
|
|
37
|
+
- **AD-027** — Evidence is ordered against the code, every rail's firing is recorded, and a checker can run with its rule off
|
|
38
|
+
- **Needs your action:** Re-run your verification after the last code change before citing the verdict — the ship gate now refuses evidence written before the code it certifies, so a claim that used to pass can block. Nothing in doctor can see this one; it shows up as a blocked stop.
|
|
39
|
+
- **AD-028** — A resolved failure is kept, a session attests to itself, and provider neutrality becomes a proof
|
|
40
|
+
- **AD-029** — A capability the init skill cannot correctly initialise is not shipped
|
|
41
|
+
- **AD-030** — Clearing a policy divergence is one operator command behind four independent locks, and a refusal never points an agent at a door the floor holds shut
|
|
42
|
+
- **AD-031** — The decisions are the changelog, a breaking change carries its own instruction, and looking never changes anything
|
|
43
|
+
- **AD-032** — A hook is healthy when it can run, not when a marker string is present
|
|
44
|
+
- **AD-033** — The gate says what it costs, appendFiles stops promising what it cannot deliver, and a dead capability leaves
|
|
45
|
+
- **AD-034** — A warning that fires on a healthy install is not a warning, and the author reads the operator's output before anyone else does
|
|
46
|
+
- **AD-035** — A lesson learned by reasoning can be written down, and the harness never learns where lessons come from
|
|
47
|
+
- **AD-036** — A lesson names what makes it true, and stops being injected when that is gone
|
|
48
|
+
- **AD-037** — A lesson can be true for a period, and an unparseable bound withholds it
|
|
49
|
+
- **AD-038** — Promotion counts distinct sessions, because one stuck session is one observation
|
|
50
|
+
- **AD-039** — A lesson is graded by the gate it was injected for, and unproven is not a passing reading
|
|
51
|
+
- **AD-040** — Three lesson tiers, and nothing crosses between products by itself
|
|
52
|
+
- **AD-041** — A member something reads and nothing writes fails the gate
|
|
53
|
+
- **AD-042** — The suite gets an empty runtime home, and one renderer renders a lesson
|
|
54
|
+
- **AD-043** — A standing rule is pinned, not ranked, and the budget says what it dropped
|
|
55
|
+
- **AD-044** — Only an injection a gate could grade can be unproven
|
|
56
|
+
- **AD-045** — A gate verdict is reused when the content hash of its inputs did not change
|
|
57
|
+
- **AD-046** — The runtime path is an artifact, and update never touches what it does not own
|
|
58
|
+
- **AD-047** — An instruction is not an affordance, and a refusal names the route that works
|
|
59
|
+
- **AD-048** — A broken updater cannot deliver its own fix, so the installer is the recovery route
|
|
60
|
+
- **AD-049** — An empty synced file says which of four reasons made it empty
|
|
61
|
+
- **AD-050** — Lesson transport is a provider capability, not an operator preference
|
|
62
|
+
- **AD-051** — A warning fails the gate, and a suppression states what breaks without it
|
|
63
|
+
- **AD-052** — The repository moves to the org and the runtime paths do not
|
|
64
|
+
- **AD-053** — The harness ships no model allowlist, and a list that names nothing enforces nothing
|
|
65
|
+
- **AD-054** — npm is the distribution, and a merged release PR is the only thing that publishes
|
|
66
|
+
- **AD-055** — The changelog is rendered from the decision records, and git says which release each landed in
|
|
67
|
+
- **AD-056** — The package delivers the runtime, and the runtime path stays where hooks already point
|
|
68
|
+
- **AD-057** — The release PR is a mechanism, not a gate, and the bot merges it
|
|
69
|
+
- **AD-058** — Gates diff against the turn's base, and language knowledge is one table
|
|
70
|
+
- **Needs your action:** If a project has the comment gate on, expect it to start firing on turns that commit and on languages it never covered. Nothing changes in your config.
|
|
71
|
+
- **AD-059** — A rail never writes a field it reads, and a counter reads the plane its events land on
|
|
72
|
+
- **AD-060** — The gate records the environment it ran under, and names it only once the cheap explanations are spent
|
|
73
|
+
- **AD-061** — A decision that refuses names its rule, and degrading preserves it
|
|
74
|
+
- **AD-062** — One command answers whether the harness did that, and says so plainly when it did not
|
|
75
|
+
- **AD-063** — One palette for human output, and a checker keeping it out of everything else
|
|
76
|
+
- **AD-064** — A snapshot is assigned, never accumulated, and a table does not list what it cannot count
|
|
77
|
+
- **AD-065** — The obs bus has a contract, and the gate checks both sides of it
|
|
78
|
+
- **AD-066** — Uninstall reads the artefact, and the plan is the confirmation
|
|
79
|
+
- **AD-067** — A reserved file that cannot be retired is rendered, and the gate holds it there
|
|
80
|
+
- **AD-068** — A directory decides what ships, and dist is derived from disk in both directions
|
|
81
|
+
- **AD-069** — A decision record declares its shape, and cites by link so a move cannot break it
|
|
82
|
+
- **AD-070** — A comment has to read for somebody who was not in the session
|
|
83
|
+
- **AD-071** — The turn's added lines are checked against the code the project already has
|
|
84
|
+
- **AD-072** — A record can leave the corpus, and removing is a change worth recording
|
|
85
|
+
- **AD-073** — A neighbour mid-gate is not a reason to block a turn
|
|
86
|
+
- **AD-074** — Code the gate cannot read is refused, and a credential is not always a file
|
|
87
|
+
- **AD-075** — A dependency a turn adds outlives the turn, so two mechanical failures are worth a stop
|
|
88
|
+
- **AD-076** — Goal-hijack enforcement needs the tool's output, and the host does not deliver it
|
|
89
|
+
- **AD-077** — A command that appears verbatim in fetched content is put to the operator
|
|
90
|
+
- **AD-078** — The two files the harness reads aloud are sealed on write and verified on injection
|
|
91
|
+
- **AD-079** — The coverage claim is a generated page with its gaps in it, not a badge in the README
|
|
92
|
+
- **AD-080** — Every hand-written list of our own rules is now checked, including the one that drifted while writing this
|
|
93
|
+
- **AD-081** — The manifest npm publishes is checked here, because the release runner was the only thing reading it
|
|
94
|
+
- **AD-082** — npm is the documented install, and the first version cannot come from CI
|
|
95
|
+
- **AD-083** — Going public switched the branch ruleset on, and an unattended release needs the App to bypass it
|
package/LICENSE
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Copyright 2026 Felipe Rodrigues (https://github.com/felipfr)
|
|
2
|
+
|
|
3
|
+
Required Notice: Copyright 2026 Felipe Rodrigues (https://github.com/felipfr)
|
|
4
|
+
|
|
5
|
+
SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
6
|
+
|
|
7
|
+
This software is licensed under the PolyForm Noncommercial License 1.0.0.
|
|
8
|
+
Commercial use requires a separate license from the copyright holder.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# PolyForm Noncommercial License 1.0.0
|
|
13
|
+
|
|
14
|
+
<https://polyformproject.org/licenses/noncommercial/1.0.0>
|
|
15
|
+
|
|
16
|
+
## Acceptance
|
|
17
|
+
|
|
18
|
+
In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
|
|
19
|
+
|
|
20
|
+
## Copyright License
|
|
21
|
+
|
|
22
|
+
The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to [Distribution License](#distribution-license) and make changes or new works based on the software according to [Changes and New Works License](#changes-and-new-works-license).
|
|
23
|
+
|
|
24
|
+
## Distribution License
|
|
25
|
+
|
|
26
|
+
The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by [Changes and New Works License](#changes-and-new-works-license).
|
|
27
|
+
|
|
28
|
+
## Notices
|
|
29
|
+
|
|
30
|
+
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
|
|
31
|
+
|
|
32
|
+
> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
|
|
33
|
+
|
|
34
|
+
## Changes and New Works License
|
|
35
|
+
|
|
36
|
+
The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
|
|
37
|
+
|
|
38
|
+
## Patent License
|
|
39
|
+
|
|
40
|
+
The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
|
|
41
|
+
|
|
42
|
+
## Noncommercial Purposes
|
|
43
|
+
|
|
44
|
+
Any noncommercial purpose is a permitted purpose.
|
|
45
|
+
|
|
46
|
+
## Personal Uses
|
|
47
|
+
|
|
48
|
+
Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, is use for a permitted purpose.
|
|
49
|
+
|
|
50
|
+
## Noncommercial Organizations
|
|
51
|
+
|
|
52
|
+
Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution is use for a permitted purpose regardless of the source of funding or obligations resulting from the funding.
|
|
53
|
+
|
|
54
|
+
## Fair Use
|
|
55
|
+
|
|
56
|
+
You may have "fair use" rights for the software under the law. These terms do not limit them.
|
|
57
|
+
|
|
58
|
+
## No Other Rights
|
|
59
|
+
|
|
60
|
+
These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
|
|
61
|
+
|
|
62
|
+
## Patent Defense
|
|
63
|
+
|
|
64
|
+
If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
|
|
65
|
+
|
|
66
|
+
## Violations
|
|
67
|
+
|
|
68
|
+
The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
|
|
69
|
+
|
|
70
|
+
## No Liability
|
|
71
|
+
|
|
72
|
+
***As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.***
|
|
73
|
+
|
|
74
|
+
## Definitions
|
|
75
|
+
|
|
76
|
+
The **licensor** is the individual or entity offering these terms, and the **software** is the software the licensor makes available under these terms.
|
|
77
|
+
|
|
78
|
+
**You** refers to the individual or entity agreeing to these terms.
|
|
79
|
+
|
|
80
|
+
**Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
81
|
+
|
|
82
|
+
**Your licenses** are all the licenses granted to you for the software under these terms.
|
|
83
|
+
|
|
84
|
+
**Use** means anything you do with the software requiring one of your licenses.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Copyright 2026 Felipe Rodrigues (https://github.com/felipfr)
|
|
2
|
+
|
|
3
|
+
Required Notice: Copyright 2026 Felipe Rodrigues (https://github.com/felipfr)
|
|
4
|
+
|
|
5
|
+
Licensed under the PolyForm Noncommercial License 1.0.0. See LICENSE.
|
|
6
|
+
|
|
7
|
+
- Noncommercial use, modification, and distribution are permitted.
|
|
8
|
+
- Keep these notices and the license terms with distributed copies.
|
|
9
|
+
- Commercial use requires a separate license from the copyright holder.
|