zaratandotworld / chorewheel Goto Github PK
View Code? Open in Web Editor NEWComputational governance tooling
License: GNU Affero General Public License v3.0
Computational governance tooling
License: GNU Affero General Public License v3.0
See checklist here: https://api.slack.com/start/distributing/guidelines
Don't require chores from before someone moves in.
Would require re-implementing gifts as debits against the month's chore balance, vs a deduction from a specific claim.
With people going out of town for long periods of time and having subletters, it would be useful to support an additional state for residents beyond "active" or "inactive", which is meant to mirror their state on Slack. By introducing an admin-settable "exempt" state which would exclude residents from chores, we could allow residents to remain in Slack without having them counted as part of the house's live-in community.
Note that this functionality should be used for people away for one month or more. For shorter absences, the breaks functionality should be used.
For a first implementation, we will introduce the minimal change -- exclusion from chore points. In the future we may adjust the semantics to exclude additional behaviors.
exempt
true/falsetrue
false
, the activeAt
timestamp should be updatedIf exempt == false
, behavior remains the same as currently
If exempt == true
:
Currently, times are all GMT, which means that users in California get cut off at around 4pm on the last day of the month.
Use the user's tz offset when displaying points values on the home screen, and calculating penalties.
Currently we don't automatically resolve polls for Chores & Things. We should work that in somewhere, transparently.
After closing this issue we can do a release, I think.
We are getting rate limited by trying to sync the workspace every time someone opens the home screen. We should restore the specialized "sync" slash command, or find a different place to include it.
Allow residents to propose arbitrary purchases with a higher bar for approval and a longer voting window.
Also, I think parseThingsAdd
and parseThingsDel
can probably be removed.
And figure out a nice way to render it
Currently the metadata
columns can be set to null
. This requires additional redundant handling in the codebase. Making the columns not-nullable with a default value of {}
would allow easier handling downstream.
Reference SQL:
-- 1. Update existing NULL values to an empty JSON object
UPDATE your_table_name
SET metadata = '{}'
WHERE metadata IS NULL;
-- 2. Alter the table to set the default value and add the NOT NULL constraint
ALTER TABLE your_table_name
ALTER COLUMN metadata SET DEFAULT '{}',
ALTER COLUMN metadata SET NOT NULL;
The following tables have a metadata
column:
getActiveResidentCount
is over-counting residents who are on break. This is due to an incorrect SQL query which returns a false negative in the case that a resident has already entered a break in the past.
Fixed in 603b918
Theory is a change in the resolution flow is inadvertently nullifying the gifts
One winner per 5 residents, rounding up.
Essentially, adjust the current month's issuance rate based on last month's surplus, such that this the sum of this month's new points plus last month's leftover points is equal to some constant. This is to prevent a slow points inflation as unclaimed points accrue month-over-month.
For some reason, with postgres the knex updatedAt
functionality doesn't actually update by default, which seems odd but so it goes. If we're going to have those columns, they might as well work.
I've done something and broken the messages
event subscription, I need to fix it.
Responding to modal interactions in the app DM is quirky UI, best to put everything in the same place (the log channel).
Requires another trip to the database after posting the message
Need to store channel
and ts
from the initial message
Add additional constraint of min(numUniqueRecipients, CEIL(numResidents / 3))
There's currently one production deployment, so clean up all the migrations manually before releasing version 0.1.0.
TODO:
houseId
to the ChoreValue
table (see #39)houseId
values to all tablesnull
and value constraints on ChoreClaim
to allow for improved gifting (see #30)Heart
migrations"You sped up X and slowed down A, B, C"
residentId
at beginning of each requestUse this to record when a buy is fulfilled
Having a single /mirror-sync
slash command for all apps is confusing.
Display the house heart values during the karma update
Specifically, include the minimum quorum in each poll.
After discussion, update the default parameters for chore penalties & hearts regeneration to:
Under this scheme, 80 points / month becomes a steady state for residents, losing and regaining a half-heart. At 105 points per person per month, we may observe a small inflation effect, ideally counteracted by the "points sink" effect of crossing 100 in a month. Will have to observe what happens in practice over the next 2-3 months.
Many of the functions involving voting are time-based, and currently many checks are done in javsascript, in between calls to the database. More sophisticated SQL should be able to incorporate these checks directly (such as disallowing votes past the end of the poll, or calculating poll). It's not immediately obvious how to do this, so punting it for later, as doing the logic in javascript gets the job done for now.
Examples:
https://github.com/kronosapiens/mirror/blob/master/src/modules/polls/models.js#L23
https://github.com/kronosapiens/mirror/blob/master/src/modules/polls/models.js#L43
https://github.com/kronosapiens/mirror/blob/master/src/modules/polls/models.js#L51
Closed with 5c59d7d
Reduce precision to 10-points, penalty at 20 points per heart.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.